From 6c4e7f2cd60f47ef5935ed9f21d19bb94db5f048 2014-11-12 08:13:30 From: Titta Heikkala Date: 2014-11-12 08:13:30 Subject: [PATCH] Add QML designer plugin Added QML designer plugin for Charts. It's possible now to add all possible series in ChartView and PolarChartView type. The properties of ChartView and PolarChartView can be set via the QML designer. The properties of the series are not editable via the QML designer. Change-Id: I51cd6bf5bd33cd8d0f7b7f2fb992e7963e344dae Task-number: QTRD-3356 Reviewed-by: Tomi Korpipää Reviewed-by: Miikka Heikkinen --- diff --git a/src/chartsqml2/chartsqml2.pro b/src/chartsqml2/chartsqml2.pro index d9f02da..599de52 100644 --- a/src/chartsqml2/chartsqml2.pro +++ b/src/chartsqml2/chartsqml2.pro @@ -9,6 +9,8 @@ IMPORT_VERSION = $$MODULE_VERSION # Only build qml plugin static if Qt itself is also built static !contains(QT_CONFIG, static): CONFIG -= static staticlib +include($$PWD/designer/designer.pri) + INCLUDEPATH += ../../include \ ../../include/QtCharts \ ../charts \ diff --git a/src/chartsqml2/designer/ChartViewSpecifics.qml b/src/chartsqml2/designer/ChartViewSpecifics.qml new file mode 100644 index 0000000..9740f46 --- /dev/null +++ b/src/chartsqml2/designer/ChartViewSpecifics.qml @@ -0,0 +1,157 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import HelperWidgets 2.0 +import QtQuick.Layouts 1.0 + +Column { + anchors.left: parent.left + anchors.right: parent.right + + Section { + anchors.left: parent.left + anchors.right: parent.right + caption: qsTr("Title") + + SectionLayout { + rows: 1 + Label { + text: qsTr("title") + } + + SecondColumnLayout { + LineEdit { + backendValue: backendValues.title + Layout.fillWidth: true + } + ExpandingSpacer { + } + } + } + } + + Section { + anchors.left: parent.left + anchors.right: parent.right + caption: qsTr("Title Color") + + ColorEditor { + caption: qsTr("titleColor") + backendValue: backendValues.titleColor + supportGradient: false + } + } + + Section { + anchors.left: parent.left + anchors.right: parent.right + caption: qsTr("Background Color") + + ColorEditor { + caption: qsTr("backgroundColor") + backendValue: backendValues.backgroundColor + supportGradient: false + } + } + + Section { + anchors.left: parent.left + anchors.right: parent.right + caption: qsTr("Background") + + SectionLayout { + rows: 2 + Label { + text: qsTr("backgroundRoundness") + toolTip: qsTr("Diameter of the rounding circle at the corners") + Layout.fillWidth: true + } + + SecondColumnLayout { + SpinBox { + backendValue: backendValues.backgroundRoundness + minimumValue: 0.1 + maximumValue: 100.0 + stepSize: 0.1 + decimals: 1 + Layout.fillWidth: true + } + } + + Label { + text: qsTr("dropShadowEnabled") + toolTip: qsTr("Enable border drop shadow") + Layout.fillWidth: true + } + + SecondColumnLayout { + CheckBox { + backendValue: backendValues.dropShadowEnabled + Layout.fillWidth: true + } + } + } + } + + Section { + anchors.left: parent.left + anchors.right: parent.right + caption: qsTr("Fill Color") + + ColorEditor { + caption: qsTr("fillColor") + backendValue: backendValues.fillColor + supportGradient: false + } + } + + Section { + anchors.left: parent.left + anchors.right: parent.right + caption: qsTr("Plot Area Color") + + ColorEditor { + caption: qsTr("plotAreaColor") + backendValue: backendValues.plotAreaColor + supportGradient: false + } + } + + Section { + anchors.left: parent.left + anchors.right: parent.right + caption: qsTr("Localization") + + SectionLayout { + rows: 1 + Label { + text: qsTr("localizeNumbers") + toolTip: qsTr("Localize numbers") + Layout.fillWidth: true + } + + SecondColumnLayout { + CheckBox { + backendValue: backendValues.localizeNumbers + Layout.fillWidth: true + } + } + } + } +} diff --git a/src/chartsqml2/designer/default/AreaSeries.qml b/src/chartsqml2/designer/default/AreaSeries.qml new file mode 100644 index 0000000..24bbf25 --- /dev/null +++ b/src/chartsqml2/designer/default/AreaSeries.qml @@ -0,0 +1,35 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + +ChartView { + width: 300 + height: 300 + + AreaSeries { + name: "AreaSeries" + upperSeries: LineSeries { + XYPoint { x: 0; y: 1.5 } + XYPoint { x: 1; y: 3 } + XYPoint { x: 3; y: 4.3 } + XYPoint { x: 6; y: 1.1 } + } + } +} diff --git a/src/chartsqml2/designer/default/BarSeries.qml b/src/chartsqml2/designer/default/BarSeries.qml new file mode 100644 index 0000000..01b3a98 --- /dev/null +++ b/src/chartsqml2/designer/default/BarSeries.qml @@ -0,0 +1,33 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + + +ChartView { + width: 300 + height: 300 + + BarSeries { + name: "BarSeries" + BarSet { label: "Set1"; values: [2, 2, 3] } + BarSet { label: "Set2"; values: [5, 1, 2] } + BarSet { label: "Set3"; values: [3, 5, 8] } + } +} diff --git a/src/chartsqml2/designer/default/BoxPlotSeries.qml b/src/chartsqml2/designer/default/BoxPlotSeries.qml new file mode 100644 index 0000000..fbf9c68 --- /dev/null +++ b/src/chartsqml2/designer/default/BoxPlotSeries.qml @@ -0,0 +1,32 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + +ChartView { + width: 300 + height: 300 + + BoxPlotSeries { + name: "BoxPlotSeries" + BoxSet { label: "Set1"; values: [3, 4, 5.1, 6.2, 8.5] } + BoxSet { label: "Set2"; values: [5, 6, 7.5, 8.6, 11.8] } + BoxSet { label: "Set3"; values: [3.2, 5, 5.7, 8, 9.2] } + } +} diff --git a/src/chartsqml2/designer/default/HorizontalBarSeries.qml b/src/chartsqml2/designer/default/HorizontalBarSeries.qml new file mode 100644 index 0000000..9c573a8 --- /dev/null +++ b/src/chartsqml2/designer/default/HorizontalBarSeries.qml @@ -0,0 +1,33 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + + +ChartView { + width: 300 + height: 300 + + HorizontalBarSeries { + name: "HorizontalBarSeries" + BarSet { label: "Set1"; values: [2, 2, 3] } + BarSet { label: "Set2"; values: [5, 1, 2] } + BarSet { label: "Set3"; values: [3, 5, 8] } + } +} diff --git a/src/chartsqml2/designer/default/HorizontalPercentBarSeries.qml b/src/chartsqml2/designer/default/HorizontalPercentBarSeries.qml new file mode 100644 index 0000000..876ecf4 --- /dev/null +++ b/src/chartsqml2/designer/default/HorizontalPercentBarSeries.qml @@ -0,0 +1,33 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + + +ChartView { + width: 300 + height: 300 + + HorizontalPercentBarSeries { + name: "HorizontalPercentBarSeries" + BarSet { label: "Set1"; values: [2, 2, 3] } + BarSet { label: "Set2"; values: [5, 1, 2] } + BarSet { label: "Set3"; values: [3, 5, 8] } + } +} diff --git a/src/chartsqml2/designer/default/HorizontalStackedBarSeries.qml b/src/chartsqml2/designer/default/HorizontalStackedBarSeries.qml new file mode 100644 index 0000000..7c0b4f4 --- /dev/null +++ b/src/chartsqml2/designer/default/HorizontalStackedBarSeries.qml @@ -0,0 +1,33 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + + +ChartView { + width: 300 + height: 300 + + HorizontalStackedBarSeries { + name: "HorizontalStackedBarSeries" + BarSet { label: "Set1"; values: [2, 2, 3] } + BarSet { label: "Set2"; values: [5, 1, 2] } + BarSet { label: "Set3"; values: [3, 5, 8] } + } +} diff --git a/src/chartsqml2/designer/default/LineSeries.qml b/src/chartsqml2/designer/default/LineSeries.qml new file mode 100644 index 0000000..2d1b629 --- /dev/null +++ b/src/chartsqml2/designer/default/LineSeries.qml @@ -0,0 +1,34 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + + +ChartView { + width: 300 + height: 300 + + LineSeries { + name: "LineSeries" + XYPoint { x: 0; y: 2 } + XYPoint { x: 1; y: 1.2 } + XYPoint { x: 2; y: 3.3 } + XYPoint { x: 5; y: 2.1 } + } +} diff --git a/src/chartsqml2/designer/default/PercentBarSeries.qml b/src/chartsqml2/designer/default/PercentBarSeries.qml new file mode 100644 index 0000000..2442f1f --- /dev/null +++ b/src/chartsqml2/designer/default/PercentBarSeries.qml @@ -0,0 +1,33 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + + +ChartView { + width: 300 + height: 300 + + PercentBarSeries { + name: "PercentBarSeries" + BarSet { label: "Set1"; values: [2, 2, 3] } + BarSet { label: "Set2"; values: [5, 1, 2] } + BarSet { label: "Set3"; values: [3, 5, 8] } + } +} diff --git a/src/chartsqml2/designer/default/PieSeries.qml b/src/chartsqml2/designer/default/PieSeries.qml new file mode 100644 index 0000000..2e92460 --- /dev/null +++ b/src/chartsqml2/designer/default/PieSeries.qml @@ -0,0 +1,32 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + +ChartView { + width: 300 + height: 300 + + PieSeries { + name: "PieSeries" + PieSlice { label: "Slice1"; value: 13.5 } + PieSlice { label: "Slice2"; value: 10.9 } + PieSlice { label: "Slice3"; value: 8.6 } + } +} diff --git a/src/chartsqml2/designer/default/PolarAreaSeries.qml b/src/chartsqml2/designer/default/PolarAreaSeries.qml new file mode 100644 index 0000000..7fda23e --- /dev/null +++ b/src/chartsqml2/designer/default/PolarAreaSeries.qml @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + + +PolarChartView { + width: 300 + height: 300 + legend.visible: false + + ValueAxis { + id: axis1 + tickCount: 9 + } + ValueAxis { + id: axis2 + } + LineSeries { + id: lowerLine + axisAngular: axis1 + axisRadial: axis2 + + XYPoint { x: 1; y: 5 } + XYPoint { x: 2; y: 10 } + XYPoint { x: 3; y: 12 } + XYPoint { x: 4; y: 17 } + XYPoint { x: 5; y: 20 } + } + LineSeries { + id: upperLine + axisAngular: axis1 + axisRadial: axis2 + + XYPoint { x: 1; y: 5 } + XYPoint { x: 2; y: 14 } + XYPoint { x: 3; y: 20 } + XYPoint { x: 4; y: 32 } + XYPoint { x: 5; y: 35 } + } + AreaSeries { + name: "AreaSeries" + axisAngular: axis1 + axisRadial: axis2 + lowerSeries: lowerLine + upperSeries: upperLine + } +} diff --git a/src/chartsqml2/designer/default/PolarLineSeries.qml b/src/chartsqml2/designer/default/PolarLineSeries.qml new file mode 100644 index 0000000..865318c --- /dev/null +++ b/src/chartsqml2/designer/default/PolarLineSeries.qml @@ -0,0 +1,43 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + + +PolarChartView { + width: 300 + height: 300 + + LineSeries { + name: "LineSeries" + axisRadial: CategoryAxis { + min: 0 + max: 20 + } + axisAngular: ValueAxis { + tickCount: 9 + } + XYPoint { x: 0; y: 4.3 } + XYPoint { x: 2; y: 4.7 } + XYPoint { x: 4; y: 5.2 } + XYPoint { x: 6; y: 6.1 } + XYPoint { x: 8; y: 12.9 } + XYPoint { x: 9; y: 19.2 } + } +} diff --git a/src/chartsqml2/designer/default/PolarScatterSeries.qml b/src/chartsqml2/designer/default/PolarScatterSeries.qml new file mode 100644 index 0000000..8c5fb35 --- /dev/null +++ b/src/chartsqml2/designer/default/PolarScatterSeries.qml @@ -0,0 +1,41 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + +PolarChartView { + width: 300 + height: 300 + + ScatterSeries { + name: "ScatterSeries" + axisRadial: CategoryAxis { + min: 0 + max: 20 + } + axisAngular: ValueAxis { + tickCount: 9 + } + XYPoint { x: 0; y: 4.3 } + XYPoint { x: 2; y: 4.7 } + XYPoint { x: 4; y: 5.2 } + XYPoint { x: 8; y: 12.9 } + XYPoint { x: 9; y: 19.2 } + } +} diff --git a/src/chartsqml2/designer/default/PolarSplineSeries.qml b/src/chartsqml2/designer/default/PolarSplineSeries.qml new file mode 100644 index 0000000..ce2f4a0 --- /dev/null +++ b/src/chartsqml2/designer/default/PolarSplineSeries.qml @@ -0,0 +1,43 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + + +PolarChartView { + width: 300 + height: 300 + + SplineSeries { + name: "SplineSeries" + axisRadial: CategoryAxis { + min: 0 + max: 20 + } + axisAngular: ValueAxis { + tickCount: 9 + } + XYPoint { x: 0; y: 4.3 } + XYPoint { x: 2; y: 4.7 } + XYPoint { x: 4; y: 5.2 } + XYPoint { x: 6; y: 6.1 } + XYPoint { x: 8; y: 12.9 } + XYPoint { x: 9; y: 19.2 } + } +} diff --git a/src/chartsqml2/designer/default/ScatterSeries.qml b/src/chartsqml2/designer/default/ScatterSeries.qml new file mode 100644 index 0000000..ec6b63c --- /dev/null +++ b/src/chartsqml2/designer/default/ScatterSeries.qml @@ -0,0 +1,33 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + +ChartView { + width: 300 + height: 300 + + ScatterSeries { + name: "ScatterSeries" + XYPoint { x: 1; y: 1 } + XYPoint { x: 2; y: 4 } + XYPoint { x: 4; y: 2 } + XYPoint { x: 5; y: 5 } + } +} diff --git a/src/chartsqml2/designer/default/SplineSeries.qml b/src/chartsqml2/designer/default/SplineSeries.qml new file mode 100644 index 0000000..1c9e71f --- /dev/null +++ b/src/chartsqml2/designer/default/SplineSeries.qml @@ -0,0 +1,33 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + +ChartView { + width: 300 + height: 300 + + SplineSeries { + name: "SplineSeries" + XYPoint { x: 0; y: 1 } + XYPoint { x: 3; y: 4.3 } + XYPoint { x: 5; y: 3.1 } + XYPoint { x: 8; y: 5.8 } + } +} diff --git a/src/chartsqml2/designer/default/StackedBarSeries.qml b/src/chartsqml2/designer/default/StackedBarSeries.qml new file mode 100644 index 0000000..08ace82 --- /dev/null +++ b/src/chartsqml2/designer/default/StackedBarSeries.qml @@ -0,0 +1,33 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.io +** +** This file is part of the Qt Charts module. +** +** Licensees holding valid commercial license for Qt may use this file in +** accordance with the Qt License Agreement provided with the Software +** or, alternatively, in accordance with the terms contained in a written +** agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.io +** +****************************************************************************/ + +import QtQuick 2.0 +import QtCharts 2.0 + + +ChartView { + width: 300 + height: 300 + + StackedBarSeries { + name: "StackedBarSeries" + BarSet { label: "Set1"; values: [2, 2, 3] } + BarSet { label: "Set2"; values: [5, 1, 2] } + BarSet { label: "Set3"; values: [3, 5, 8] } + } +} diff --git a/src/chartsqml2/designer/designer.pri b/src/chartsqml2/designer/designer.pri new file mode 100644 index 0000000..518300d --- /dev/null +++ b/src/chartsqml2/designer/designer.pri @@ -0,0 +1,55 @@ +QML_FILES += \ + $$PWD/ChartViewSpecifics.qml \ + $$PWD/default/AreaSeries.qml \ + $$PWD/default/BarSeries.qml \ + $$PWD/default/BoxPlotSeries.qml \ + $$PWD/default/HorizontalBarSeries.qml \ + $$PWD/default/HorizontalPercentBarSeries.qml \ + $$PWD/default/HorizontalStackedBarSeries.qml \ + $$PWD/default/LineSeries.qml \ + $$PWD/default/PercentBarSeries.qml \ + $$PWD/default/PieSeries.qml \ + $$PWD/default/ScatterSeries.qml \ + $$PWD/default/SplineSeries.qml \ + $$PWD/default/StackedBarSeries.qml \ + $$PWD/default/PolarAreaSeries.qml \ + $$PWD/default/PolarLineSeries.qml \ + $$PWD/default/PolarScatterSeries.qml \ + $$PWD/default/PolarSplineSeries.qml + +QML_FILES += $$PWD/qtcharts.metainfo + +# Images +QML_FILES += \ + $$PWD/images/areaseries-chart-icon.png \ + $$PWD/images/areaseries-chart-icon16.png \ + $$PWD/images/barseries-icon.png \ + $$PWD/images/barseries-icon16.png \ + $$PWD/images/boxplotseries-chart-icon.png \ + $$PWD/images/boxplotseries-chart-icon16.png \ + $$PWD/images/horizontalbarseries-icon.png \ + $$PWD/images/horizontalbarseries-icon16.png \ + $$PWD/images/horizontalpercentbarseries-icon.png \ + $$PWD/images/horizontalpercentbarseries-icon16.png \ + $$PWD/images/horizontalstackedbarseries-icon.png \ + $$PWD/images/horizontalstackedbarseries-icon16.png \ + $$PWD/images/lineseries-chart-icon.png \ + $$PWD/images/lineseries-chart-icon16.png \ + $$PWD/images/percentbarseries-icon.png \ + $$PWD/images/percentbarseries-icon16.png \ + $$PWD/images/pieseries-chart-icon.png \ + $$PWD/images/pieseries-chart-icon16.png\ + $$PWD/images/scatterseries-chart-icon.png \ + $$PWD/images/scatterseries-chart-icon16.png\ + $$PWD/images/splineseries-chart-icon.png \ + $$PWD/images/splineseries-chart-icon16.png\ + $$PWD/images/stackedbarseries-icon.png \ + $$PWD/images/stackedbarseries-icon16.png \ + $$PWD/images/areaseries-polar-icon.png \ + $$PWD/images/areaseries-polar-icon16.png \ + $$PWD/images/lineseries-polar-icon.png \ + $$PWD/images/lineseries-polar-icon16.png \ + $$PWD/images/scatterseries-polar-icon.png \ + $$PWD/images/scatterseries-polar-icon16.png\ + $$PWD/images/splineseries-polar-icon.png \ + $$PWD/images/splineseries-polar-icon16.png diff --git a/src/chartsqml2/designer/images/areaseries-chart-icon.png b/src/chartsqml2/designer/images/areaseries-chart-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6de11ec14404e0673ac9300ee183839a0be886d4 GIT binary patch literal 1483 zc%17D@N?(olHy`uVBq!ia0vp^5+KaM1SIoCSFHz9k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m@_g%B1$5BeXNr6bM+EIYV;~{3m8Da#=fE;F*!T6L?J0P zJu}Z%>HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%CQ%e#R zDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!bU)lMM_F70k@^3{6bU z%nWrDj0_Bo^bLT>OxMuF%GAut$Xo#mlz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3 zjrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<;L6O-~wOKg>t zU|z^A@b!fooL3ADC}5E3S0onb8|oS8=jQ6eR2P>7rKaImT^v$bkg6Y)TAW{6lnjiI zG-V{K@M{Gr1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ8NHOu6f1KxS4RUkb2lSbBLg!F zLqiKABS$v_b3-#{OGjs83qzP0*z`IZSh`vmxf+_fIvN@px|&!5HMkl%xd25REi4@^ zV0u0Cic1pnl2c)NGZA_X@ana4E=o--$uA1Y&(DFSfPjqrlKkR~`~n5%U^4{`-^Aq1 zJdl7UD1xAFO)bhSOHFYr%Fk5*hp<&978f`gnHmF~ZfInV@VTY2lc|fTk%f_^rI8X; zZwfh~rVn(CK3Z~t2?5g}hzU>pKn^_nq~-zhOc5}1aM=mYVPIhV>FMGaQgLg|l#^LZ zjsk7Q-P*!OYnAoXFK%A{K)d>rBFjgGiUMm5tz)9)pDksr4kxh4a`t`MHuHW)m%Pbk0T%H!+yS}?|PV(Ibz3Hd356)lK zX{w;V?b+9={XU<6)~qjH^14cIdi471tFLO!Kfn8Kp2L^)MiE!Wrxi9#N5t-maJ5>C z*3M4j=3`-+)aRq-{2^(h!0o3+l~!}#h(3JvwW`8v>7?V21^q%pce=5B|6RMnkcXKu zda*~&`W3g|{`y<@soYA|@@$1oo!$KBpDWE~_a05s$!Qj2`o%o!Y})O&W>URwN`k8v zn9R8%%GaKmvi&xrW6_PuC2tNtG?3u&;A6S%qU88_^2wHEX0v&9AK#gIEGcOg?~Ccm zvzq)AxeU8gj4WmNPCwnWR#0KqS+&iN9X3XYbTVEPVBKTjUH2iH?Zbux9*Zv?(7(^t z*i^Qn#71s%=dp`{tFP{2oH#kWv(?mC-D#n~o*p;lf0LXSu{1j_uyi>6wrutk9+Cbw zlO;YWmLFORB+X_fPDl}Q)w*oJ8)dOlAb4d+j=suN;gbT9@4r`H+T?mr=xA2Q;<)wq zPizZnp4hT2(<>*Cp}gs6tcc-E>vGWw|9bo&&n;I-yB|c<5$(qIu;2A Yop;ISZ0{X-3@TndUHx3vIVCg!0H+ulh5!Hn literal 0 Hc$@HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%CQ%e#R zDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!bU)lMM_F70k@^3{6bU z%nWrDj0_Bo^bLT>OxMuF%GAut$Xo#mlz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3 zjrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<;L6O-~wOKg>t zU|z^A@b!fooL3ADC}5E3S0onb8|oS8=jQ6eR2P>7rKaImT^v$bkg6Y)TAW{6lnjiI zG-V{K@M{Gr1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ8NHOu6f1K}S4RUkb2lSbBLg!F zLqiKABS$v_b3-#{OGjs83qzP0*z_7W8k-uMIysrTIvN=ox|&!5HMkl%xwsmdI$Bsd zTEO&r<`tJD<|U`X^kyRTI^xx9gX%NJOCw?FYo_$jDfO)0}m^nBibAb7iG0W4%F{I+wlu40Y zha5y)ttUHQ>61Dl!7j3iz5GF6Y%})@dB-Cb3SEUA9Sb@SYpz~+TmE8GNL<|9@b~vt zX{>u)S8Md;_19Z3OLz`fw7)Cc{p)QRcay{AE#+Jdp;jNN&eqzqF>aXfWtN|c(AFs4 zHw6|QP1kR0cLlA#-hW(qmh5rHx>o{iiYsgE^iu`WH%DH$o40&b*2<8oR|R(S-4_c+ zGpSBKnYESc$g8ZaN&8~-e*gV8J>qrJin+AG&X3S$oO zi%GO>pb|F&3Vz^(&ZwIk7^kSyX)#12Q-@5QndqD_otcX?&-iv{WC_g_LWokS4C+8pF()DRRJd5eD|UI}LmITC$Hq`@ zmZDuikR}S~GFAnGp%9#Iqw$$ymuEClT*@FX;f4?i3^|=pNZP}iNym$&J=O|037JU` zUB=kBdN|_$W$MMypdjZBKA)kuq7Wro+E(TyU93T?0=XNBowDO{Os9tRay_a;VN8J_ z3KUiAVL5_nlxj_~0txAO9#$boa37d2*&KGlVs`JS^d| zks&Pg4_5Xp zJAtPe#;NCc04o(-|H!4Vd^B=3rqv-@8Hy%r)q1589L3uIPu3vL8R$Rl5@K;Z7(6~} zevWuHKBSAA8HO8p)`C>i$C~Wp(RX6k`N$4vVXZ=Ht_K z@X}r)K&5wmx{N(}c%NiTx^*jFw&%&kRhhz-M~CmIQf5s2^UO_i!j!9m#F)B;Esp)| z=ZBUkr>)no*YCe__X+>N;5~oFAXNLfqiKo1{Hw)PYkRJZcz>AlP_?Szwd!n9L%@-; z)pY#vf)Y6P^T;tPW9nAFZu;WN-KdPj80|01QZ7R=6TbgWxWJ$L+43WUMbgxnQSKEP z)s>si?1=M*yQ4-r zKk{vV|E=q8g?-+sBAUh$6Iz8NjkpU7*i8@zY! zCNo_4YpJX%&TNkB9&RipOZnGp;sd+di?@6na16M(#O+K_3ZyZ0eS`kq>RVZv!VfJ7)r ztL?b$+cuk;7Jdm_ySrzLVDYuH;s->cxRO_pQExO=MC|R`2wnY+ck|3t8yAS-Y;O41 zM(mwGZX`xUiepO;)Q>lb8YZoX;~(AB1W=jITSL z)pM(XC!cHiKosSRiJ#s!>=61kWx8*(cxsXE4n3X z5z0f`U$*G}?+fRZ`IjI3l6Zgc$#|Hz?E$;@u%(k9{3#f8CT(Zt(we^j DVCQC* literal 0 Hc$@HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%CQ%e#R zDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!bU)lMM_F70k@^3{6bU z%nWrDj0_Bo^bLT>OxMuF%GAut$Xo#mlz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3 zjrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<;L6O-~wOKg>t zU|z^A@b!fooL3ADC}5E3S0onb8|oS8=jQ6eR2P>7rKaImT^v$bkg6Y)TAW{6lnjiI zG-V{K@M{Gr1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ8NHOu6f1K}S4RUkb2lSbBLg!F zLqiKABS$v_b3-#{OGjs83qzP0*z{VM8=5(KWrU4I$SPU2Zifx$$uDV+g^QLNT~DwgiBhtJ{xM3A6F^)_QrJc zwKZYuufMjx-y+wRxc~lt^(q627l9(aYLi`*KGr2l9IM;!zcgspvc1Q2wnoi8|2&-e!E6QZA9`+W4PfiOLysomFuRr~?mnMh*^5B&rO*XsQh1$|KXWlkj^zi3iceTla7akTo zm~l3()seF~X8Y~jss&E{9n0p|pa0Bo#QQNPQ-;U#%WK29&8p01^Pc5#lj~+=C`;b) zcgmr#w~}vey)9#8bvz(=`NTq{dL7=!NgE$DST17G=$p7l-zW#dZM2^Ktkz!>ZXHE3_`1NhU(!`75^S{q$U}m_xTINf>?VszQLeA6G&t;uc GLK6USkn1A= literal 0 Hc$@^alm<%?C;M^r-2o7zNm$pe0S7(;ATfxrR7S`RCCa-JUk{6RV+f5J@ zk$DjvJ2<@zQIQSwCjNt=H*Z6|sE8*KJj{b95uGoyog!lgA4%T(zWjdQ_r34WrQxB0 z)|P!O6h*aW2DKd7_XclshLVkx;cI71?;7$ zofWH4#Kr6}*+6zg4=|CM?NY(&?W?)EF#$1Mg5#ExWWGFEVQ9-tG9&RUmvvQGu?A;6 zn4cLc7&8-wWHNn6=-!%44A>Csbj_Z0e7TlnHtfpe9H?1_-hkkVB=b9{Vs@BTkq7B` zBpNn20BAvofLL4*z#*FF0MByd5yBuQ#|4=e>H1=bH_t4~IW1lHMWiHC!Pu2qwpy)5 zs?iAY##taqQecDU!vqobryZ=RegXQhfeqq{$Y!3Qp$}>nk%H4mt+MXH!Ni_0t&mu+9CpBbD z+0elmEy<8S5z{hdQAjCVT1@jPo)Z!PBzRs)b0QE_Nl~K-(6F%;S5gH<<+Zo~6bXP- zOp;;=RTOwZ<;7@!yuZQCI6l@L12(wUA8u@0uB>`c$H*%nG}-8Y;R?dYuOOFJ^8$S! zs~eURD0+ed)nkR8bsCy!583oahGlDu2skN0`bUg$V*TcdprwEo=lQ6nq$P=|bIt$B z8cTv<|7n+oiu7P`+-!a#Y>p3f$jo?TI7U8{Kas&Yo6(d)?QLm(ZmzW0H1=(MePwz1 zAX)qGOul>2YOdZ8(Y1wz9?)EA?r6)eu_wEr5BG?5-8%VF=#6)qVX!`_*&&&F8Z-O*_7JeJr1dzT!i>N0;W`y!PAMhHuNEW{#3S V&%Hd1F0TbMo=FX9_xi`q{{p%6V7>qV literal 0 Hc$@QZ?Suq1X_ZDI5=$NXQd^CGurH09 zg~9|(v~*!X;zw*mqC-Um0#*iA1{jfGK!^b`At>h(7lf(~oNV8{=kI&(-TS#dQ$9C5 zI5J2O#Bi~oR`7l}dI$RO_vVVpN*C}9IOL>d{|O(&4TEVXS{!skd$Q{*-TEo7$e!rpwNAyw3T&li@ml!=fh(R91rPPVzE z>(A3b6vfB}%O)@)5iB`K3lmN-8e33dp!=4GEY~3;S*yD(l%=Tn3bt1&?HG1~UZQZy z=uq=$kYs4vrekz~DzLFPI;bvrkgmYMZTUK`M`QFaS9?<ujYW7W?4>^^P))gxW@lvjmE*y z|Flc2!aW!rcbXpyJL3Z#JTpEXjv?=E3lEl4ROM>;w!XHyS||52=L>}=o12f<*N@)s ze0uX}Y-?-l^4AZ;9LIr?jf22&A%(v!C$Q-=$ zaO0NQ=r4lT15>$fx2v9fZok_AEC4HO&-V2V5uZO^Y@L}d4@5Iv%$3#dHY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%CQ%e#R zDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!bU)lMM_F70k@^3{6bU z%nWrDj0_Bo^bLT>OxMuF%GAut$Xo#mlz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3 zjrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<;L6O-~wOKg>t zU|z^A@b!fooL3ADC}5E3S0onb8|oS8=jQ6eR2P>7rKaImT^v$bkg6Y)TAW{6lnjiI zG-V{K@M{Gr1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ8NHOu6f1KxS4RUkb2lSbBLg!F zLqiKABS$v_b3-#{OGjs83qzP0*z`IZSh`vmxwx3RIvN@px|&!5HMkl%xwsmdI$Bsd zTEO&r<`tJD<|U`X^kyRTI^)%AgX%NJOCw?FYo_$jDfO)0}m^n0Tt1kmH)&@@($B>F!S0-=d zJ**($y3ue$b9jOfms-Kmuo9leC$SkC63hbUmUgogiX>Z~(!cm|NA;t&%6XiMEA%y& zX5KbabWzWUy{@j&(qQ pGoLuB9W?#kcSUv%D`kF0HU_Ql+w!jX^*sWW3ZAZhF6*2UngIMocc}mX literal 0 Hc$@XQa$-s?bhA5`TQ0k^ z?oPbTAy#S>f)<+UgO9N#1wryqk_YiYe2Iuq+Lsih6j~v{2b;$#s5l$%qKM?dVRvW# zf4=Yk|M}4`j{AFWE9s((+m)!*?1g* zqH9i|3Nr2KllRaN!+cP8s$*oV^tobTH)Y0{ROI?hJcfoN-?SQtfN?b8cq+Sb>oyA< zTV;=nCBEe6QQbMx3eae)T(w#aOSakJLtrRUr~wxd6GZN$7b=m;ZrWAoI#zQm*o2UV z%DxI}tTY1hI6y#5rIQv9A&{gL926x94gi6N0>{%wO2R=!loTNY+JmLu0=uSE^g`Pg zl~lG)h_7&5v)N2F(AUbwGgK}Vq#I6iT(2V&VA$5TXQ z+0GGMzf{^X?1k+_(UftK>2ol}bFRyE&>^Xy+V<$MI_)E_f``&Q1Jv9c> zXp}DkhhB;~sbg!(MII^YDob}#wqq+9+0ghxrXUysFJ&Rj3W8SPGf>LQT0WhH9UJfB z8W~B?=s8U^Gzg(FC{uzVs@Kkn4|qOMh=2UjY0db@Te zp5MQ)cWHk2?5)d-e=UKd-(NhZ%q%~h?f&)Z#d{I{d(T65=2`jQa{tNSGJmXGJ-FVN zJDd0~(evckfy2o!8wV5CjkT_4yH*z=m{p|9!yNjy1w1447&!^Xy7t-f9)B#ETcJ literal 0 Hc$@PUoM2uzB&BfhgD}FKv@1tV-InTCrPc3swX*OJ3K|CNCy$wwvIb z;C~Ro-P|r-6cNRvy5SC@2%h{0%5Hk_pzJ2-$(Pwqk+Fl1B=3D+e!uVg-uLHneqeuB z=eEv3AkdXPpcd%ffH z9aXbbCgt2AS;tmb^D*J3crJ-L}+7VXOP?5kM@EJ8>v!Tb)YoXdk0b`gk$ zBO#rG5C}pTMq`2i_W+)QJj>BX2*Icv6J%Zlt;JApu2GQ-YNq9jN(rV)h$FLXqtOUA zB4O+fvrv*G-v-ZzC?e#I+C*!HY_G3vK}DYKnhr6s4SZP}!XqTXFzqW?PA<1(*!Eh9 zqA6pWn!~~{$66NKMth`yDl4PC(x`*j0`l;PtJ8W^`u=jYGSvstXyifHq(#x{D%M9V zWRt9#VCbK)VH&b1q!lhBX81JE32_MHJg;Op5eg|uNk!tYZDToZhL4Krn5YO)kswS* zB`F$Di2^UAcrlWUCEMJr?Geq^QJZW2;YurV<&=vwg546v^>zp3tC(P~iXD(D3Sd`G z(@on~?Dh-PiWRx$DP&|^Y=OlL%jPl>a8jK1j~L~|*3A_`O+z)t^AT0aND|ZH8vm0u zmIlNA(=Kfl?Lq&z)cjOf8XsiSnQ`fGyuG_!qJwoNt16}D$G7hucFlnetLHYq>i+sE z*faUM2s=K%QFjHC57)owKEHnBk0A4TYSYzQa82a)Wc13V`Ft(({LaMLsq)W9_jb$% zC&m^Ak01Onf21~j6zq-g6V(gHZj4`iud&xop58IO_503mk@}1{8+^8>KHeLgeAyuD ZxWM)4n_n)@Jl^8Zcs4zt-cO!5_X~lxU+4e; literal 0 Hc$@3x{Cvm9Yk>GK@=y5!em}N$qsrE+|A=)Aow!dAu@LGk>tJa%kTGn-~0aDoESgZ z*L|p)Ac(%)h*H4&zTn-{fxq|eS9!c0M42)w+7;ALT}a5fJqgL2sZPNHRQ2ZcGK>>M zXVoZ`Q8_;*X|@?w15DUA9U@rqr0=L&4I*+9P8n8$`uS>!A`Lx3o#paO-bur%F*57I z;_P@yo2_Z0P9;x}abLm)Oo&v{H|v%s`3Y*%u7uBlnx@E22&yHhKS7oA6J*+UA<2a! zA&mim;395>aBhhrD(Fivp zVcVUefhdZB4VDdIM96DeNcBUOH`unIKu>cG2N||S2C_P7&!7ZFwXa}0`TUk)%WEYH zr;PShhX!GWHch&X_D}&I1NT*!`7e%crwl-rz z3+0pqh5v+gLze_GBQsec%Vt=Hj{y*4SvkuHfKQ8ZIuZkI8{2WSY*ff_0?xfG0+5M{ zVlaMq6n!J&qa6SN@*9W$aYJ%U2k{5MAb&NSG657 zUF6B3ys8;ipg0y3s1+-8jf+svy0%GfW>_+|iGYd4aQ_HVMrhq!=9LUkIF^kla#j?n z7FYkDtkF0a`k!`bt8fnn$F1ha!q)ge3(t&;heMj5SMgx^IYln{t4|($>bpYrUVriY z6f<_WzS6PsuJ?U^KLakvFP&!cThGJw%X8uoHL#0XT+nWpN0-IpKZbYjzs9e@?`NjD zFI@`Y5l@oXNxzVqR$a|7+&;5WJ+)s)QQ(rUGOwCD53wIjsiH|qm$iNj)j T?$@nzAeio4W?XriI)C*yAM9LL literal 0 Hc$@875x-CswEwgiWRf~d{C3kDsk{gpd+YSHl z&EE%|K8bHC3{>zz1RW|U{@@RYh(F+qJ_v%Mh(CJ}Z)Q71WDj1F+;dL8@0@ebJ!gM+ z*XpLm#f=n2HD%Xmd9p7I-iA8zMf1ikkZlo87jX~j!)4urlwzV@NM~)mALgNM4sX8; zTPbR0$to0aF}GGWkj?4=hOO8x6|C0wimMv~5YxS|-*S@7hbz|@+A@>OrdW>8xhgDK zYeqcSGtyNsMg|PYWZK*4){0CV*bwV<#U6Bgxsqfi{mMiR%p5~cLhwM6`IS^L*G;R) zgLI6Igbf}5S`=9jjfo;?p#>fY98VrG45D&Ol!Z85T?~olnSF9z%T!|#EyM@klC`s&TW9k9Eg@HLmrW%TLRdRS)VIc?E<9YaP&CLKyiad6&RO9L$?2oX)mND@=! zn*UQZjwHkV)h;y?>A^spYJQ?jjSqCl%y?ut9-inqL7LXX3eg>1 zvnIwbD|mjx*y!V@q0_rxZhkkuXVubF$?y1rZ`S3L4fz#J+ur);YW>$;hwUYwWY=7Fqp01PJG(oxGq}n)v#X1)%DU7NMUFFf-9hKanQOb+ zLlhAd1sOq5K2{i^7W7t85tzM+VT6z`MG-yt)I&tn9ow}C@uADi+;h%+-#O==d(MT< z_U291JF5wT*pzHh(sby@nN|79TyONJEcNM1GLP6W@rGX#_z7LiSU_`(hvXEK~SYB<}g91IxH5_Ev7U}D1k3EQD6jeTg>7-K2 zjxDcLC|okSs5&$VGPG&ZWweLVFt<9|%M3Y?PD9TgbTxb*x!S)%txolUI2*CUHSndV z{fey(n$SW?B}U;tLEX?rUWiLff={q1+R`^z2BnYWSca0A}kwHq=X<) zC9eKIRikk-^gr!VHsK!h#pUM5%JTR?3(t&;hl9VlIE4r6Vp5SZ#ra!TrOiam#(48w z-LV%7vzL!QTS$$bx!X1i*sC`l)O`N=W3uzjyw@Sc re!KUs>Uy)=dgAOD!{drHu+m(r??z6uDF_&u7 literal 0 Hc$@RM6Y#!wPHu+9pj{H_{~4s_jNsuuc@Sv-QTCqakJ_4v2}Ar&~#2q@q9v4a*{-~xYqw< zjUmA>f3-_nMS3tiE;c_A7RLv=WM+Ia92-u(=_7-6Ca)>w=G&KNAFX@{R_pIJo%{Hq zo1VM0<-oJf3(EO}TF-EFX8T;Ud*IVIs>@t^a%%WmP^=ebo_1{=e6=s8cSPSm)-Rse ztW~2OyJFV|VxQl=9-cp1S63v~XDxZ8Ls^%NJvlyouCsPJbNl literal 0 Hc$@%ShXdWjLCikoDzyV*_XD%oV$uDZ2u7g~CdrpfGX+$NJIQ+Hbr z{vE`kVyg!ckBUE_)RSOAD^f+FAoL*gtO)iXLZKi+oz&ebQhIPmGVi^7-+OP~ymz^+ z_3(ycs7+fGfHODaAxRkj~h85$2$74)nc) z%@nn&WaT??XZDzEAe+?#3|qBbDp<{js;+L7A*Op^(Q*>Zx3QNDZJ7zCBbw#2t_n+5 z%b*9_2V3*TVA+sN=Fma9xhfL}HpDtzwR;_3t|piTzcP^nGsn;i5L`|$zmw|Bw$Uo` zART4HA%h2i7DX0BqM`^6&;kzxjwg>80uebX%0i5;Ervw%%z~WL(zRGbOE4vjU76!5 zl?q!4v&buQK$4`uhaiLqBIFM^Sg(d0e^1?m27SY`Tx=nS4s^W-_2UG?)Q@1h+3ccY z$FCKNl#HwDE(chivu&=9_HhmtmPh;f0T*&P=%aqmAoo$&^H-?lsR58=BOmuHaw&SR zhKzn2Iyj>x81jcTEmMw3DTPnR(n3n$#W(J0EGIDR3ofXZEA*_>&`f*CrWYzKTT5iX$K#}bVi7)8JGmliDWF9KA*?BBNn&bT z^M9(wkz}}k+NEwHJs60K%}HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%CQ%e#R zDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!bU)lMM_F70k@^3{6bU z%nWrDj0_Bo^bLT>OxMuF%GAut$Xo#mlz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3 zjrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<;L6O-~wOKg>t zU|z^A@b!fooL3ADC}5E3S0onb8|oS8=jQ6eR2P>7rKaImT^v$bkg6Y)TAW{6lnjiI zG-V{K@M{Gr1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ8NHOu6f1KxS4RUkb2lSbBLg!F zLqiKABS$v_b3-#{OGjs83qzP0*z`I%8yH(yn7f)8TDln;x|npilSn;Dro8<`tB znL5Grdgc|EB<3Zj!t`b$^t#~HYvo*&npl!w6q28x14{t`8Tlpo#Toep3eLf13L3tN z$(eZ|0ZmW@LEV~Klv$RV;#QQOs{jsRt4u5|FtD@$rXOaT$Zg=v(p#7U|uVY+fi9oB%7UrnHm;X`^EK17vZxVmp zbN|=>t!cW;uD|{p@^OMi-}1|ud*k$-FPi8w?pznW`s#+f?YHMWUwZrI^o9);r+=@K z3Yj;xVUdQ`dJcggpK}ijDs1GoxP$}>Uie#gKgW#0bCOC|(#Mq9%T9jYvuf3})SKI4 z1-9IO@4sAl%a*9M7c*K`Z;4xP+&F>n&zxDe^0sf%5q8>;V_x$t!#U(pq!d8nO zHrV(6FrTR^$Dz$fIVAboci(-d@7l3HM$dZgxeA+OMP{=DgY%C^OsfrVS!ONQpLyVC z4d2HS8y+_1f@XyU%k1=@2)8)5B?gFdyteR@XzNmPPAeb!yiJ|^bru>Cf#2+N!AzdJa^HH4QG%1q~P>3I}Xvioky we_3tnVbFVdQ&MBb@0P@k^qyPW_ literal 0 Hc$@F&7P3jY*~JZ|;OxvzcG%2M zXYRVQfdSVa;4?!?_FQu5$s zX6`-bp6@&7o_o%`K0LU;z3r(s48z*f{ZbaqJN&n`1$~ddSz^)jB$Nwq#2SND#Q~V0 zSw(=S4P_i;fuhw8e+J?hwzZ_^3b2qF;8n{AD!xt7Gi=Ns@qM1HsAT~0A{f`r1aW`q z69U(@1o2`dLuG6cl=S{d2aHS(=G4iu%4x*Dy?ET?5rF}qf_uh<>GEEJSm))@+Ebp(f}wy)(KODoK{^~^S$a3lP&7kQ=wSnNn2)eL6U7^YK;9f} zjL%A`hA$)~h!TW0Pm3pq-$mYkZWG1u7LyF)~B3F`AAsjF6(DG%Ip~ z7>dzNj)!4|XgEm=p(INS2q}j-E*ul1EW?USG?a`ao7lAJLd8@;6RZD&6*k54q5~9Y zIXTOkXjZ^*$%2+!vTR%&VewrVMb%AT(dS=KBUa$(F9R**SO&hHVP1bo1XL`B>L(he zqK%UatR&M?gkeIGkm5L^fz|#`)<_f#`JZxWs!$F3%Z=hk!bbZ56ZMRPnj?SZz#R@@bt>;kQ%hU4ZZNJhwd~NFb g;&*$lU0lSrVoc}x?l-X3Q~uv3Ee}d_$(LUJ3z2`O0{{R3 literal 0 Hc$@HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%CQ%e#R zDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!bU)lMM_F70k@^3{6bU z%nWrDj0_Bo^bLT>OxMuF%GAut$Xo#mlz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3 zjrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<;L6O-~wOKg>t zU|z^A@b!fooL3ADC}5E3S0onb8|oS8=jQ6eR2P>7rKaImT^v$bkg6Y)TAW{6lnjiI zG-V{K@M{Gr1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ8NHOu6f1KxS4RUkb2lSbBLg!F zLqiKABS$v_b3-#{OGjs83qzP0*z}sX895plyE>a0I$9bUx|npilSn;Dro8<`tB znL5Grdgc|EB<3Zj!t`b$^g7|yYvo*&npl!w6q28x14{t`8Tlpo#Toep3eLf13L3tN z$(eZ|0ZmW@LEV~Klv$RV;#QQOs{jsRt4u5|FtD@$rXOF! zOQx6?EpilS6<>bTTC{aLqX@U_0*CSkhh!R*88}%MH3%p(Cbg#9S6u0j;8gW7FkSY$ zbpLhR3GlIX}d27^O;T2)4WgCC}-FGx;XX=*^9}fyJG??W-^Ucy;KcxkK6RyKl?hms!``^Jk6;VYvRVpy24q zqMd)(P8>LN@bSk5e{;-~qh-5HchvhcFS}uI{(14?iLI6U?@J$ucyKLmyW*#2naL+v zjC*>W9rUgwxadht{8?e+ry_JSXPUFK@{5|9nvR3FZ$}$QJPDK0mvZF#WRTQdYBckR zu+_^FDXTl1%B<#A_$?2#ttFl}#BHRjyxZRrq0VYnym0Ypa23@wyXDH=ln_ z^qk?hd@)x{>XEp)O)IndqwVIu|5|l6ZF7W<64%rBWxE&b-?uMm=IN&_E)Tc`v=n%` zD|W`{z39kSn=IMumT-`p`9-^v;;aVKTY|H{sw!ul)GTjN<0vA1}LX@JmC6Z}PHj`uh3-YK}{FjvEU&3iQVW z1hS~Ahd){55hPHWAlvD(Vs28xvO{xMw@tVt|CFQ2bYkGF?|*hCa~|IA?2%h|@Z+7E zOiWXQr_SFH^7nkE$Hb#aivA`}b}ytIPJQ9>@bYH$lJ0fW3|JZBq)@O@)?}k$oPAPu z^;P#XOL)1(7F^i$Wa;*QfByK$UwvI#qA07m;CXNN!@OymuRL57v@#&@?m`j&d;s literal 0 Hc$@HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%CQ%e#R zDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!bU)lMM_F70k@^3{6bU z%nWrDj0_Bo^bLT>OxMuF%GAut$Xo#mlz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3 zjrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<;L6O-~wOKg>t zU|z^A@b!fooL3ADC}5E3S0onb8|oS8=jQ6eR2P>7rKaImT^v$bkg6Y)TAW{6lnjiI zG-V{K@M{Gr1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ8NHOu6f1K}S4RUkb2lSbBLg!F zLqiKABS$v_b3-#{OGjs83qzP0SoIp2yErGdM<`tJD<|U`X^kyRTy5iMq=HGQCC^wE+FObD0;K}>k!2Xf%qCp8b4XNrKC7a15BCwjU#hE&{| zGU@KRgAO9C{>xpbUTEu@RS zT3q&f+o+{MKYuVVa6QXZ@kotb`^oF2v6-Hl z3wGblW1P9n^XOc^bQ`&TH)SW4Hns&3I!s~{9QL?uzNr(gTe~DWM4f*5&5| literal 0 Hc$@Yg==oy!P`2NDxeWqL{-HGzJvxx0g*A3F^~g_HgWhl z==1qnN_xJ43fWzv3XPEBVM4B9`MlNF?^=pF4iGU4#&k1IetkGg61o;A_eQgH){;O; zADpzo$mCF7og7yMjqKk}^tmE7U;v~Lu2D7}(T$S}c13*l)D%f9K+t%c{1sFoJ4{H> z21GOz4yrW65F8g`B2kWGwh}DOuoR6SF33d0C?~Q!(O4w*W@|+;C#M^}uoNdt2w5UU zRjbudH5`KW7{v&J;Mri=AVvh82@@%9&~&<+7G&V4wr(LEnuI4Sqp*VFB-y-zVP&(6 zhE1oDD4a6NRV<1L(Uf6OO|*k@ptv;J$xm2-$^i#fY!%m|*!_pArKuheM9A(+CoJb1- z+2CsblQjwlL;ck*O%?7z@3`3fSXdk%VB(pv@o;FD?#XztY8g3^ci+vuecb-2BhXs! zJykaYtGec1vwP^4shPp-W*q79xc&z^;2)%A1S<; zy7D-8?A!PGnfc(3>+e5bum3o*b6|Dr^Xh#+?JJ+VdUEZq4b$G_XHrA*?c~AZKLHs8 BYz+Va literal 0 Hc$@u~tgEV*4nn;(-q+f76e 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 literal 0 Hc$@1l{q)j`kcGj+HK@_v(u8nPSV{&J+`p*X{ zD59wNM-agYD(Wv$d?DymaEdS$2EKkNhzg2|g6Pd`r-n2&ojJt{Am1zQ%{}4(@d1eqYl`GDvAw!k_I~gkusD5$O1*{*>o4Q z_E)sdjez1|0aRDY2<~U{%!O{#%(fHx~Oh^oKBFhuCL1J&V)+J`;WX%_rqGS;vOQfhu zr4pzF1JEu|j35Y}4VLv|gx~2gk>dJIr>Sm1299d$7Sf?fc(T$7yHS)R>qjuGbb8pZ z>C_U1Q%1RpMKJ-IG7PGYc2E{{jf{43Jrbikr-P6XmoCw(iTlTFgeSbYVwtCjwvGd$$Z(pNvp>=P0 z-ZkdzhbJEy=0)d(lydsdwyk~qVO;Y-)40ki^2@W<0=iW`)Bf`ImVsmM_xCP)vu?rC rPjinq7CsHOH4pw6W6%d)6{m0TRgXOVCZJOnygx)L(Jr5jZP@w~#~y=P literal 0 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 literal 0 Hc$@HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%CQ%e#R zDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!bU)lMM_F70k@^3{6bU z%nWrDj0_Bo^bLT>OxMuF%GAut$Xo#mlz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3 zjrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<;L6O-~wOKg>t zU|z^A@b!fooL3ADC}5E3S0onb8|oS8=jQ6eR2P>7rKaImT^v$bkg6Y)TAW{6lnjiI zG-V{K@M{Gr1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ8NHOu6f1K}S4RUkb2lSbBLg!F zLqiKABS$v_b3-#{OGjs83qzP0*z}sX895plyPB98I$9bUx|npilSn;Dro8<`tB znL5Grdgc|EB<3Zj!t`b$^cv&UYvo*&npl!w6q28x14{t`8Tlpo#Toep3eLf13L3tN z$(eZ|0ZmW@LEV~Klv$RV;#QQOs{jsRt4u5|FtD%yrXOzOM`njOLy$jv*Dd zrUXTIH9H8zl!_>S6kXh*R9D$u^Zb~cg1KRxQyv;_-&QE| z{Iz}ep1Ad|zn=R1N3KMo?aAM|=auIQW!^2nyi&*e)$iK8+hPe~TsOY8)Z550oNuws zIIzG#_}YiZ7G}Pm#TTx7efS}R!9uPb?tv|rI29cQHt6hr)Rq_^qUsxb*kF^+Y|#Uq zk8gbcd-^GpK#d6R!QX%T{=Y3_W@~X>xJt`Wpd>b3;@GA&DxNvF*%oSWT{bb)2o#xr zUVV@E#f+OjYnBD3Mz-}oyIDGS)hY{*Nh~J1wSFt#SNmR`<|xEu8sRW|8Rv!Em)>3) z@;k0p*~nci@|mpm^WvRI#>||x>s~kU&w5@de>PUc;OAP=v#!Ut`9E%FvQydnc_q`C gHO9Ag?qii;_%q{7(EYy7E1<&3)78&qol`;+02dg()c^nh literal 0 Hc$@X;p%XUyaR9kWET-yT*?OnMZP>?uq zIIW5{3UdmIFw~&Vk2t@^1|m*G=8RFM4w0aMONdcembnj?T^%*cviQf|+}-=W&-?p5 z&+|SXIj=##cuMfhU;qH7q$J};Zhpi62JyHr9dYOwH@(Sf%xpTH%@z|338-weg#=Ta zL=I^r30p})7nuM6ujJZIX4b4rlUr%0knm%K9;XZNkAy^zi?HUCENCHf?34m}+|mYt zcAElPA<>C-E;X5JPcCK1^isXaTAFXgY*6ANFu^0|6gWwi06k6z<(7LC&~v?VZtWL~ zAn-Ya%~wEwJ7v}xKsC*fphOrau!>8gSBW zW$Z52PE(+NPgv+eRslhQD>z*`-3!H(dpuBF$V48(C4z-wk<%#(pxvyI%zioAZ7Ok* zA|vUh3mGeykL>7wn0h(Y59GX&FJ^8X+)u_Z;sTR>7 zVpImhG6Yd+#ZnkmV=8r=3=Zh{FRn}qOH~prg2E~chBfgR7B5pvQ3O>Z(zql^Qh=L6 zxmkj;k^!#WZx@l`DwRKPFX7773`wvwW1?wCpaKlJG)ud4X&0zYN5L2!VYO3!L99PP z9xAXnXr*>x!C|?nmESPJG&v_iXfzY^wYnQ$^ijV=H9TAUVZ?8(6Mi~~g>(c>$z?HInwapf!$!c@~br$PZ$ePw|K#{w1F7> z{edOx1~1IcL~E2+QS6E%hNzlkoH?-*TzrzY3*tlnrXsKkC={rU1)RhJ}L zH+YQ?t~6^;hj}XvfO=WdnVV0?4s@+IpAEXuu#dR%y05n@`()*T4|rKIn<(GuKh6*E zQ@4%{4Q3Ae_L*v8BeF8K=DoG?$IRcSy|;N<^_Ibyx`V@A(}Aq=eiR)}fbVze?T(P< z8G}tZNJ;PQz4B1-9B%h!t`bO|9qq|8g7w?lcp<>;rJA(C{Kfvi36P@E<42RS*8K%I CDP&*( literal 0 Hc$@HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%CQ%e#R zDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!bU)lMM_F70k@^3{6bU z%nWrDj0_Bo^bLT>OxMuF%GAut$Xo#mlz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3 zjrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<;L6O-~wOKg>t zU|z^A@b!fooL3ADC}5E3S0onb8|oS8=jQ6eR2P>7rKaImT^v$bkg6Y)TAW{6lnjiI zG-V{K@M{Gr1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ8NHOu6f1K}S4RUkb2lSbBLg!F zLqiKABS$v_b3-#{OGjs83qzP0SoIp2yErGdM<`tJD<|U`X^kyRT8sXJz=HGQCC^wE+FObD0;K}>k!2Xf%qCp8b4XNrKCqvsOWHwFgAYEKu(kcwMV zCdGC)IY_jYUzudrp)vWBlRnep1^+Mkzg;eJZ-%*>LdPP38||)J{jE3VR&UHH4tzYP z_?hkVTK9-)Uq7A``de3THv8{n+xh3W-hR97W==@xU(Of1^ja+B`uDR;*!ueGsr!rP z2=uxwj$2>8J9eGNq?G;l-Rq3%FK`OcV2Cb4?cKbZJ#&XqnNIjvBSwJW69 z{LLnv#TrpMVh5TJE(lv)IZvF0QGg}WbE0SgQ|9iwN(Ma6fl~~48r>FOtlIlb=8!jQ z&ErO1$LO_UW--@QnS1<}JBKUSXkQSHoWjfCc>Aqcsn%4krL)dHds))N@QdTDX6MoC zMKbL7GtNCXejalA^PZ@+UWZ~GrXGH%u=+9kr4%F0t|qaEvw1I+SUna0A~{PtbK?8o z9feM9aqHQuw?=I=^c6mo%x7fMX~^5g#(d+cT|(Tg0*fR4IVX!R>Fnt{p8UX~FVj#; yXQG5z^W^XQe4@@t2wndBIFlo2-`73%tP%_x8q`#egrxic6>y%eelF{r5}E*i>fKNP literal 0 Hc$@zIksch9%=~}8@Bjb#AE!Fn zb90-QHd7QeH@{gclD#E-n`V$NT72_1*;;X?3wNR(T-7~DDJJTMbl%p>un2W?VE;4N zMo}{>R;dej6}HI+vROUEuz~GT;cD9$xVq5`G2IQzmXl&8MjtY?Wu};&@d96PRamh$ z4|=e3u)Smq_8OAOY}`P%1u`*UL#)$*-RJmnkYXn7%H$lXIfkBu;NBGTE2yqQ2dyFx z(s4E#F?axIQDi|ZE{b3sE$~3#c=Cu55R>DgEF|dKVu&}-?2(IFw&sgSDW-z4D|1}6 zT4k$I7I|e3NRkxV5QGRpMEn5<>p{fvSJf?O&^J8G#TIhtP}aLqKTa`B{R*~QC`=i4 z{92+&%D6yxIl%IqZF6OmbNuY^!vy#qQb2qV9OTw3iE z=`{u2u$)k_HY`vrR_Iv=pqcfMO;2W6w*CRT$eZ}#!R;K=pN==-XfcL*eM>Gws@~^xmUC E0f_Z#`Tzg` literal 0 Hc$@6^gi+J0Tm$j_3gn<2$gN9@>ok!@7icAdH5bJcs9&&uSl4REG%H$lVS%zMN;K3yGJE&r=hgOjX z=~zSv8yo<%C`LduCW_!N&2xZfIr4~M5S3%1%*W~KVu&}-?3eRers|7GNv4FcE3<65 zT#l552=WG4AW2eSgXhBp5%xzNtXIO0-&V7rLErE!7hA}o16l7wBRI)0wJX?eF1K#j z@vDgOmbNuYk}{tpj>W2qV9QTw3iF z=>s|4u$(|~Fep$pR_Iw5pqcTIO|NBGwl;`>OC(7D#G_oidUHk8(m;#xyr3x=Nn)y8 z^MA6&l3>_>+NGuT3y`!7jTkb4` zemXzE-jB(0S5a~G(A>gIgFWS6 kdwmgP_TOK9K0ia%Q(Hd`pJ}QKF9-9UO?PXLQ|B-J0#kuwN&o-= literal 0 Hc$@