ScatterCtrl: Improvements in properties and bug fixes

git-svn-id: svn://ultimatepp.org/upp/trunk@7671 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
koldo 2014-09-12 20:58:26 +00:00
parent 61d04ba28a
commit 55d8b70bb1
10 changed files with 269 additions and 59 deletions

View file

@ -15,7 +15,36 @@ void ScatterCtrl::DoShowEditDlg() {
PropertiesDlg(*this).Run(true);
}
void GeneralTab::Init(ScatterCtrl& scatter) {
void MeasuresTab::Init(ScatterCtrl& scatter) {
CtrlLayout(*this);
SizePos();
pscatter = &scatter;
xMin <<= scatter.GetXMin();
xMax <<= scatter.GetXRange() + scatter.GetXMin();
yMin <<= scatter.GetYMin();
yMax <<= scatter.GetYRange() + scatter.GetYMin();
yMin2 <<= scatter.GetYMin2();
yMax2 <<= scatter.GetY2Range() + scatter.GetYMin2();
butUpdate.WhenAction = THISBACK(Change);
Change();
}
void MeasuresTab::Change() {
ScatterCtrl &scatter = *pscatter;
scatter.SetXYMin(xMin, yMin, yMin2);
scatter.SetMinUnits(xMin, yMin);
scatter.SetRange(xMax - xMin, yMax - yMin, yMax2 - yMin2);
scatter.SetModify();
scatter.Refresh();
}
void TextsTab::Init(ScatterCtrl& scatter) {
CtrlLayout(*this);
SizePos();
@ -38,16 +67,23 @@ void GeneralTab::Init(ScatterCtrl& scatter) {
bottomMargin <<= scatter.GetPlotAreaBottomMargin();
bottomMargin <<= THISBACK(Change);
mouseHandlingX <<= scatter.GetMouseHandlingX();
mouseHandlingX <<= THISBACK(Change);
mouseHandlingY <<= scatter.GetMouseHandlingY();
mouseHandlingY <<= THISBACK(Change);
Change();
}
void GeneralTab::Change() {
void TextsTab::Change() {
ScatterCtrl &scatter = *pscatter;
scatter.SetTitle(title);
scatter.SetLabels(xLabel, yLabel, yLabel2);
scatter.SetPlotAreaMargin(~leftMargin, ~rightMargin, ~topMargin, ~bottomMargin);
scatter.SetMouseHandling(mouseHandlingX, mouseHandlingY);
scatter.SetModify();
scatter.Refresh();
}
@ -136,7 +172,7 @@ void LegendTab::Change() {
scatter.SetLegendFillColor(fillColor.GetData()).SetLegendBorderColor(borderColor.GetData());
scatter.SetLegendPosX(tableHoriz).SetLegendPosY(tableVert);
scatter.SetLegendNumCols(numCols);
scatter.SetModify();
scatter.Refresh();
}
@ -316,7 +352,8 @@ PropertiesDlg::PropertiesDlg(ScatterCtrl& scatter) : scatter(scatter)
Title(t_("Scatter properties"));
tab.Add(general, t_("General"));
tab.Add(measures, t_("Measures"));
tab.Add(texts, t_("Texts"));
tab.Add(legend, t_("Legend"));
tab.Add(series, t_("Series"));
tab.Add(data, t_("Data"));
@ -328,8 +365,10 @@ PropertiesDlg::PropertiesDlg(ScatterCtrl& scatter) : scatter(scatter)
void PropertiesDlg::OnTab()
{
if (tab.IsAt(general))
general.Init(scatter);
if (tab.IsAt(measures))
measures.Init(scatter);
else if (tab.IsAt(texts))
texts.Init(scatter);
else if (tab.IsAt(legend))
legend.Init(scatter);
else if (tab.IsAt(series))

View file

@ -1,9 +1,21 @@
#ifndef _ScatterCtrl_Properties_h_
#define _ScatterCtrl_Properties_h_
class GeneralTab : public WithGeneral<StaticRect> {
class MeasuresTab : public WithMeasures<StaticRect> {
public:
typedef GeneralTab CLASSNAME;
typedef MeasuresTab CLASSNAME;
void Init(ScatterCtrl &scatter);
private:
ScatterCtrl *pscatter;
void Change();
};
class TextsTab : public WithTexts<StaticRect> {
public:
typedef TextsTab CLASSNAME;
void Init(ScatterCtrl &scatter);
@ -79,7 +91,8 @@ public:
private:
ScatterCtrl& scatter;
GeneralTab general;
MeasuresTab measures;
TextsTab texts;
LegendTab legend;
SeriesTab series;
DataTab data;

View file

@ -422,6 +422,17 @@ void ScatterCtrl::InsertSeries(int id, ArrayCtrl &data, bool useCols, int idX, i
InsertSeries<ArrayCtrlSource>(id, data, useCols, idX, idY, beginData, numData);
}
ScatterCtrl &ScatterCtrl::AddSeries(GridCtrl &data, bool useCols, int idX, int idY, int idZ, int beginData, int numData)
{
AddSeries<GridCtrlSource>(data, useCols, idX, idY, beginData, numData);
return *this;
}
void ScatterCtrl::InsertSeries(int id, GridCtrl &data, bool useCols, int idX, int idY, int idZ, int beginData, int numData)
{
InsertSeries<GridCtrlSource>(id, data, useCols, idX, idY, beginData, numData);
}
ScatterCtrl::ScatterCtrl() : offset(10,12), copyRatio(1)
{
paintInfo = mouseHandlingX = mouseHandlingY = isScrolling = isLabelPopUp = false;

View file

@ -39,7 +39,7 @@ public:
}
}
void Init(ArrayCtrl &_data, int idY, int idX, bool _useCols = true, int _beginData = 0, int _numData = Null) {
Vector<int> ids;
//Vector<int> ids;
ids << idY << idX;
Init(_data, ids, _useCols, _beginData, _numData);
}
@ -64,6 +64,11 @@ private:
public:
GridCtrlSource() : data(0), useCols(true), beginData(0), numData(Null) {ids << 0 << 1;}
GridCtrlSource(GridCtrl &data, bool useCols = true, int idX = 0, int idY = 1, int beginData = 0, int numData = Null) :
data(&data), useCols(useCols), beginData(beginData), numData(numData) {
ids << idY << idX;
Init(data, ids, useCols, beginData, numData);
}
GridCtrlSource(GridCtrl &data, Vector<int> &_ids, bool useCols = true, int beginData = 0, int numData = Null) :
data(&data), useCols(useCols), beginData(beginData), numData(numData) {
Init(data, ids, useCols, beginData, numData);
@ -89,13 +94,27 @@ public:
ids << idY << idX;
Init(_data, ids, _useCols, _beginData, _numData);
}
virtual inline double y(int64 id) {return useCols ? data->Get(beginData + int(id), ids[0]) : data->Get(ids[0], beginData + int(id));};
virtual inline double x(int64 id) {
if (IsNull(ids[1]))
double GetVal(int64 id, int idx) {
if (IsNull(ids[idx]))
return double(id);
else
return useCols ? data->Get(beginData + int(id), ids[1]) : data->Get(ids[1], beginData + int(id));
else {
int r, c;
if (useCols) {
r = beginData + int(id);
c = ids[idx];
} else {
r = ids[idx];
c = beginData + int(id);
}
const Value &val = data->Get(r, c);
if (val.Is<double>())
return double(val);
else
return ScanDouble(val.ToString());
}
}
virtual inline double y(int64 id) {return GetVal(id, 0);}
virtual inline double x(int64 id) {return GetVal(id, 1);}
virtual inline double xn(int n, int64 id) {return useCols ? data->Get(beginData + int(id), ids[n]) : data->Get(ids[n], beginData + int(id));}
virtual inline int64 GetCount() {return numData;};
};
@ -126,6 +145,8 @@ public:
ScatterCtrl& SetPopText(const String x, const String y1, const String y2)
{popTextX = x; popTextY = y1; popTextY2 = y2; return *this;}
ScatterCtrl& SetMouseHandling(bool valx = true, bool valy = false);
bool GetMouseHandlingX() {return mouseHandlingX;}
bool GetMouseHandlingY() {return mouseHandlingY;}
ScatterCtrl& ShowInfo(bool show = true) {paintInfo = show; return *this;}
#ifdef PLATFORM_WIN32
@ -181,8 +202,10 @@ public:
using ScatterDraw::AddSeries;
ScatterCtrl &AddSeries(ArrayCtrl &data, bool useCols = true, int idX = 0, int idY = 1, int idZ = 2, int beginData = 0, int numData = Null);
ScatterCtrl &AddSeries(GridCtrl &data, bool useCols = true, int idX = 0, int idY = 1, int idZ = 2, int beginData = 0, int numData = Null);
using ScatterDraw::InsertSeries;
void InsertSeries(int id, ArrayCtrl &data, bool useCols = true, int idX = 0, int idY = 1, int idZ = 2, int beginData = 0, int numData = Null);
void InsertSeries(int id, GridCtrl &data, bool useCols = true, int idX = 0, int idY = 1, int idZ = 2, int beginData = 0, int numData = Null);
ScatterCtrl& SetCopyRatio(int ratio) {copyRatio = ratio; return *this;}
int GetCopyRatio() {return copyRatio;}

View file

@ -3,28 +3,48 @@ LAYOUT(Properties, 536, 336)
ITEM(Button, close, SetLabel(t_("Close")).Tip(t_("Close this dialog")).RightPosZ(4, 68).BottomPosZ(4, 20))
END_LAYOUT
LAYOUT(General, 400, 308)
LAYOUT(Measures, 396, 256)
ITEM(LabelBox, dv___0, HSizePosZ(80, 80).VSizePosZ(12, 56))
ITEM(LabelBox, dv___1, HSizePosZ(4, 4).VSizePosZ(0, 4))
ITEM(Label, dv___2, SetLabel(t_("X max")).RightPosZ(80, 64).BottomPosZ(35, 21))
ITEM(EditDoubleNotNull, xMax, RightPosZ(80, 64).BottomPosZ(13, 19))
ITEM(Label, dv___4, SetLabel(t_("Y max 2")).RightPosZ(12, 64).TopPosZ(12, 21))
ITEM(EditDoubleNotNull, yMax2, RightPosZ(12, 64).TopPosZ(36, 19))
ITEM(Label, dv___6, SetLabel(t_("Y min 2")).RightPosZ(12, 64).BottomPosZ(79, 21))
ITEM(EditDoubleNotNull, yMin2, RightPosZ(12, 64).BottomPosZ(57, 19))
ITEM(Label, dv___8, SetLabel(t_("Y max")).LeftPosZ(12, 64).TopPosZ(12, 21))
ITEM(EditDoubleNotNull, yMax, LeftPosZ(12, 64).TopPosZ(36, 19))
ITEM(Label, dv___10, SetLabel(t_("Y min")).LeftPosZ(12, 64).BottomPosZ(79, 21))
ITEM(EditDoubleNotNull, yMin, LeftPosZ(12, 64).BottomPosZ(57, 19))
ITEM(Label, dv___12, SetLabel(t_("X min")).LeftPosZ(80, 64).BottomPosZ(35, 21))
ITEM(EditDoubleNotNull, xMin, LeftPosZ(80, 64).BottomPosZ(13, 19))
ITEM(Button, butUpdate, SetLabel(t_("Update")).RightPosZ(12, 56).BottomPosZ(13, 19))
END_LAYOUT
LAYOUT(Texts, 472, 320)
ITEM(Label, dv___0, SetLabel(t_("Label Y2:")).RightPosZ(16, 68).TopPosZ(48, 21))
ITEM(EditString, yLabel2, RightPosZ(16, 68).TopPosZ(72, 19))
ITEM(EditString, yLabel, LeftPosZ(12, 64).TopPosZ(72, 20))
ITEM(Label, dv___3, SetLabel(t_("Title:")).LeftPosZ(12, 64).TopPosZ(16, 21))
ITEM(EditString, title, HSizePosZ(80, 212).TopPosZ(16, 19))
ITEM(Label, dv___5, SetLabel(t_("Label X:")).LeftPosZ(12, 64).BottomPosZ(11, 21))
ITEM(EditString, xLabel, HSizePosZ(80, 228).BottomPosZ(13, 19))
ITEM(Label, dv___5, SetLabel(t_("Label X:")).LeftPosZ(12, 64).BottomPosZ(47, 21))
ITEM(EditString, xLabel, HSizePosZ(80, 228).BottomPosZ(49, 19))
ITEM(Label, dv___7, SetLabel(t_("Top margin:")).RightPosZ(128, 72).TopPosZ(16, 21))
ITEM(Label, dv___8, SetLabel(t_("Label Y:")).LeftPosZ(12, 64).TopPosZ(48, 21))
ITEM(LabelBox, dv___9, HSizePosZ(80, 88).VSizePosZ(40, 40))
ITEM(LabelBox, dv___10, HSizePosZ(4, 8).VSizePosZ(0, 4))
ITEM(Label, dv___11, SetLabel(t_("Left margin:")).LeftPosZ(12, 64).TopPosZ(220, 21))
ITEM(LabelBox, dv___9, HSizePosZ(80, 88).VSizePosZ(40, 72))
ITEM(LabelBox, dv___10, HSizePosZ(4, 8).VSizePosZ(0, 40))
ITEM(Label, dv___11, SetLabel(t_("Left margin:")).LeftPosZ(12, 64).BottomPosZ(103, 21))
ITEM(EditIntSpin, topMargin, RightPosZ(88, 40).TopPosZ(16, 19))
ITEM(Label, dv___13, SetLabel(t_("Right margin:")).RightPosZ(12, 72).BottomPosZ(67, 21))
ITEM(EditIntSpin, rightMargin, RightPosZ(44, 40).BottomPosZ(45, 19))
ITEM(EditIntSpin, leftMargin, LeftPosZ(12, 40).TopPosZ(244, 19))
ITEM(Label, dv___16, SetLabel(t_("Bottom margin:")).RightPosZ(128, 88).BottomPosZ(11, 21))
ITEM(EditIntSpin, bottomMargin, RightPosZ(88, 40).BottomPosZ(13, 19))
ITEM(Label, dv___13, SetLabel(t_("Right margin:")).RightPosZ(12, 72).BottomPosZ(103, 21))
ITEM(EditIntSpin, rightMargin, RightPosZ(44, 40).BottomPosZ(81, 19))
ITEM(EditIntSpin, leftMargin, LeftPosZ(12, 40).BottomPosZ(81, 19))
ITEM(Label, dv___16, SetLabel(t_("Bottom margin:")).RightPosZ(128, 88).BottomPosZ(47, 21))
ITEM(EditIntSpin, bottomMargin, RightPosZ(88, 40).BottomPosZ(49, 19))
ITEM(Option, mouseHandlingY, SetLabel(t_("Y mouse handling enabled")).LeftPosZ(8, 168).BottomPosZ(4, 16))
ITEM(Option, mouseHandlingX, SetLabel(t_("X mouse handling enabled")).LeftPosZ(8, 168).BottomPosZ(20, 16))
END_LAYOUT
LAYOUT(Legend, 340, 220)
LAYOUT(Legend, 340, 256)
ITEM(LabelBox, rectangle, SetLabel(t_("Position")).LeftPosZ(120, 80).TopPosZ(4, 60))
ITEM(Label, labelVert, SetLabel(t_("Vertical:")).LeftPosZ(232, 48).TopPosZ(176, 21))
ITEM(Label, labelNumCols, SetLabel(t_("Column number:")).LeftPosZ(128, 92).TopPosZ(84, 21))
@ -41,12 +61,12 @@ LAYOUT(Legend, 340, 220)
ITEM(Label, labelFill, SetLabel(t_("Fill color:")).LeftPosZ(12, 64).TopPosZ(84, 19))
ITEM(LabelBox, labelDistance, SetLabel(t_("Distance to corner")).LeftPosZ(224, 104).TopPosZ(136, 68))
ITEM(LabelBox, labelAnchorCorner, SetLabel(t_("Anchor corner")).LeftPosZ(12, 204).TopPosZ(136, 68))
ITEM(Option, legendAnchorLB, SetLabel(t_("Left-Bottom")).LeftPosZ(20, 92).TopPosZ(180, 16))
ITEM(Switch, legendPosition, SetLabel(t_("Top\nTable")).LeftPosZ(128, 64).TopPosZ(24, 32))
ITEM(Option, legendAnchorRB, SetLabel(t_("Right-Bottom")).LeftPosZ(116, 92).TopPosZ(180, 16))
ITEM(Option, legendAnchorLT, SetLabel(t_("Left-Top")).LeftPosZ(20, 92).TopPosZ(152, 16))
ITEM(Option, legendAnchorRT, SetLabel(t_("Right-Top")).LeftPosZ(116, 92).TopPosZ(152, 16))
ITEM(LabelBox, table, SetLabel(t_("Table")).LeftPosZ(4, 332).TopPosZ(64, 148))
ITEM(Option, legendAnchorLB, SetLabel(t_("Left-Bottom")).LeftPosZ(20, 92).TopPosZ(180, 16))
END_LAYOUT
LAYOUT(Series, 420, 228)

View file

@ -126,11 +126,17 @@ esES("Propiedades de gr\303\241fico")
euES("Grafikoa propietateak")
frFR("Propri\303\251t\303\251s des graphes")
T_("General")
caES("General")
esES("General")
euES("Oro har")
frFR("G\303\251n\303\251ral")
T_("Measures")
caES("")
esES("")
euES("")
frFR("")
T_("Texts")
caES("")
esES("")
euES("")
frFR("")
T_("Legend")
caES("Llegenda")
@ -165,6 +171,48 @@ esES("Cerrar este di\303\241logo")
euES("Itxi elkarrizketa hau")
frFR("Fermez cette bo\303\256te de dialogue")
T_("X max")
caES("")
esES("")
euES("")
frFR("")
T_("Y max 2")
caES("")
esES("")
euES("")
frFR("")
T_("Y min 2")
caES("")
esES("")
euES("")
frFR("")
T_("Y max")
caES("")
esES("")
euES("")
frFR("")
T_("Y min")
caES("")
esES("")
euES("")
frFR("")
T_("X min")
caES("")
esES("")
euES("")
frFR("")
T_("Update")
caES("")
esES("")
euES("")
frFR("")
T_("Label Y2:")
caES("Etiqueta Y2:")
esES("Etiqueta Y2:")
@ -183,12 +231,48 @@ esES("Etiqueta X:")
euES("Etiketa X:")
frFR("\303\211tiquette X:")
T_("Top margin:")
caES("")
esES("")
euES("")
frFR("")
T_("Label Y:")
caES("Etiqueta Y:")
esES("Etiqueta Y:")
euES("Etiketa Y:")
frFR("\303\211tiquette Y:")
T_("Left margin:")
caES("")
esES("")
euES("")
frFR("")
T_("Right margin:")
caES("")
esES("")
euES("")
frFR("")
T_("Bottom margin:")
caES("")
esES("")
euES("")
frFR("")
T_("Y mouse handling enabled")
caES("")
esES("")
euES("")
frFR("")
T_("X mouse handling enabled")
caES("")
esES("")
euES("")
frFR("")
T_("Position")
caES("Posici\303\263")
esES("Posici\303\263n")
@ -249,12 +333,6 @@ esES("Esquina de anclaje")
euES("Txoko aingura")
frFR("Ancrage de coin")
T_("Left-Bottom")
caES("Esq-Fons")
esES("Izq-Abajo")
euES("Ezker-Behean")
frFR("Gauche-Bas")
T_("Top\nTable")
caES("Dalt\nTaula")
esES("Arriba\nTabla")
@ -285,6 +363,12 @@ esES("Tabla")
euES("Taula")
frFR("Table")
T_("Left-Bottom")
caES("Esq-Fons")
esES("Izq-Abajo")
euES("Ezker-Behean")
frFR("Gauche-Bas")
T_("Visible")
caES("Visible")
esES("Visible")
@ -368,3 +452,12 @@ caES("Prim\303\240ria")
esES("Primaria")
euES("Lehen")
frFR("Primaire")
// Obsolete
T_("General")
caES("General")
esES("General")
euES("Oro har")
frFR("G\303\251n\303\251ral")

View file

@ -3,7 +3,8 @@ description "Scatter control to plot in GUI applications based on ScatterDraw\37
uses
CtrlLib,
plugin\jpg,
ScatterDraw;
ScatterDraw,
GridCtrl;
file
ScatterCtrl.cpp,

View file

@ -3,4 +3,5 @@
#include "CtrlLib/init"
#include "plugin\jpg/init"
#include "ScatterDraw/init"
#include "GridCtrl/init"
#endif

View file

@ -50,9 +50,17 @@ or].&]
]_[* SetMouseHandling]([@(0.0.255) bool]_[*@3 valx]_`=_[@(0.0.255) true],
[@(0.0.255) bool]_[*@3 valy]_`=_[@(0.0.255) false])&]
[s3; If [%-*@3 valx] mouse can scroll or zoom in X axis.&]
[s3; If [%-*@3 valy] mouse can scroll or zoom in Y axis.&]
[s3; If [%-*@3 valy] mouse can scroll or zoom in Y axis.&]
[s1; &]
[s6;%- &]
[s5;:ScatterCtrl`:`:GetMouseHandlingX`(`):%- [@(0.0.255) bool]_[* GetMouseHandlingX]()&]
[s3; Returns true if mouse can scroll or zoom in X axis.&]
[s1;%- &]
[s6;%- &]
[s5;:ScatterCtrl`:`:GetMouseHandlingY`(`):%- [@(0.0.255) bool]_[* GetMouseHandlingY]()&]
[s3;~~~1664; Returns true if mouse can scroll or zoom in Y axis.&]
[s1;%- &]
[s6;%- &]
[s5;:ScatterCtrl`:`:ShowContextMenu`(bool`):%- [_^ScatterCtrl^ ScatterCtrl][@(0.0.255) `&
]_[* ShowContextMenu]([@(0.0.255) bool]_[*@3 show]_`=_[@(0.0.255) true])&]
[s3; If [%-*@3 show] is true the context menu can be opened (right
@ -237,17 +245,17 @@ owLegend]([@(0.0.255) bool]_[*@3 show]_`=_[@(0.0.255) true])&]
[s6;%- &]
[s5;:ScatterCtrl`:`:SetLegendPos`(const Point`&`):%- [_^ScatterCtrl^ ScatterCtrl][@(0.0.255) `&
]_[* SetLegendPos]([@(0.0.255) const]_[_^Point^ Point]_`&[*@3 pos])&]
[s3;%- [%% Calls to ]SetLegendPos(pos).&]
[s3;%- [%% Calls to ScatterDraw`::]SetLegendPos(pos).&]
[s1; &]
[s6;%- &]
[s5;:ScatterCtrl`:`:SetLegendPosX`(int`):%- [_^ScatterCtrl^ ScatterCtrl][@(0.0.255) `&]_[* S
etLegendPosX]([@(0.0.255) int]_[*@3 x])&]
[s3;%- [%% Calls to ]SetLegendPosX(x).&]
[s3;%- [%% Calls to ScatterDraw`::]SetLegendPosX(x).&]
[s1; &]
[s6;%- &]
[s5;:ScatterCtrl`:`:SetLegendPosY`(int`):%- [_^ScatterCtrl^ ScatterCtrl][@(0.0.255) `&]_[* S
etLegendPosY]([@(0.0.255) int]_[*@3 y])&]
[s3;%- [%% Calls to ]SetLegendPosY(y).&]
[s3;%- [%% Calls to ScatterDraw`::]SetLegendPosY(y).&]
[s1; &]
[s6;%- &]
[s5;:ScatterCtrl`:`:GetLegendPos`(`):%- [_^Point^ Point][@(0.0.255) `&]_[* GetLegendPos]()&]
@ -256,7 +264,7 @@ etLegendPosY]([@(0.0.255) int]_[*@3 y])&]
[s6;%- &]
[s5;:ScatterCtrl`:`:SetLegendNumCols`(int`):%- [_^ScatterCtrl^ ScatterCtrl][@(0.0.255) `&
]_[* SetLegendNumCols]([@(0.0.255) int]_[*@3 num])&]
[s3;%- [%% Calls to ]SetLegendNumCols(num)&]
[s3;%- [%% Calls to ScatterDraw`::]SetLegendNumCols(num)&]
[s1; &]
[s6;%- &]
[s5;:ScatterCtrl`:`:GetLegendNumCols`(`):%- [@(0.0.255) int]_[* GetLegendNumCols]()&]
@ -265,7 +273,7 @@ etLegendPosY]([@(0.0.255) int]_[*@3 y])&]
[s6;%- &]
[s5;:ScatterCtrl`:`:SetLegendRowSpacing`(int`):%- [_^ScatterCtrl^ ScatterCtrl][@(0.0.255) `&
]_[* SetLegendRowSpacing]([@(0.0.255) int]_[*@3 num])&]
[s3;%- [%% Calls to ]SetLegendRowSpacing(num)&]
[s3;%- [%% Calls to ScatterDraw`::]SetLegendRowSpacing(num)&]
[s1; &]
[s6;%- &]
[s5;:ScatterCtrl`:`:GetLegendRowSpacing`(`):%- [@(0.0.255) int]_[* GetLegendRowSpacing]()
@ -275,7 +283,7 @@ etLegendPosY]([@(0.0.255) int]_[*@3 y])&]
[s6;%- &]
[s5;:ScatterCtrl`:`:SetLegendAnchor`(int`):%- [_^ScatterCtrl^ ScatterCtrl][@(0.0.255) `&]_
[* SetLegendAnchor]([@(0.0.255) int]_[*@3 anchor])&]
[s3;%- [%% Calls to ]SetLegendAnchor(anchor)&]
[s3;%- [%% Calls to ScatterDraw`::]SetLegendAnchor(anchor)&]
[s1; &]
[s6;%- &]
[s5;:ScatterCtrl`:`:GetLegendAnchor`(`):%- [@(0.0.255) int]_[* GetLegendAnchor]()&]
@ -284,13 +292,13 @@ etLegendPosY]([@(0.0.255) int]_[*@3 y])&]
[s6;%- &]
[s5;:ScatterCtrl`:`:SetLegendFillColor`(const Color`&`):%- [_^ScatterCtrl^ ScatterCtrl][@(0.0.255) `&
]_[* SetLegendFillColor]([@(0.0.255) const]_[_^Color^ Upp`::Color]_`&[*@3 fill])&]
[s3; Calls to SetLegendFillColor(fill).&]
[s3; Calls to ScatterDraw`::SetLegendFillColor(fill).&]
[s1; &]
[s6;%- &]
[s5;:ScatterCtrl`:`:SetLegendBorderColor`(const Color`&`):%- [_^ScatterCtrl^ ScatterCtr
l][@(0.0.255) `&]_[* SetLegendBorderColor]([@(0.0.255) const]_[_^Color^ Upp`::Color]_`&[*@3 b
order])&]
[s3; Calls to SetLegendBorderColor(border).&]
[s3; Calls to ScatterDraw`::SetLegendBorderColor(border).&]
[s1; &]
[s6;^ScatterCtrl^%- &]
[s5;:ScatterCtrl`:`:GetLegendFillColor`(`):%- [_^Color^ Upp`::Color][@(0.0.255) `&]_[* GetLe

View file

@ -314,14 +314,15 @@ COMPRESSED
193,74,2,185,129,190,167,163,122,254,206,11,113,87,4,197,171,53,8,26,249,59,19,85,22,162,74,11,161,55,148,234,249,187,223,161,161,86,103,116,95,19,126,48,204,182,23,182,51,113,126,108,91,206,241,214,211,95,237,160,215,148,50,44,139,222,32,86,98,39,37,198,116,157,69,126,165,207,49,86,129,248,180,189,42,192,206,8,66,195,44,29,48,37,95,183,64,152,207,28,73,178,112,189,197,18,151,109,137,134,229,198,214,26,188,168,127,93,87,154,245,47,147,245,4,195,152,169,72,254,38,187,32,16,23,5,30,22,146,88,87,60,78,170,255,177,252,241,46,5,169,224,182,13,130,0,246,213,42,134,235,83,164,83,12,80,97,121,126,65,46,203,60,56,142,114,186,177,4,125,126,77,223,184,101,97,184,240,65,159,191,79,86,250,190,185,147,102,58,22,102,158,91,113,207,243,190,121,83,204,18,165,190,239,133,31,252,214,174,165,196,7,108,242,91,190,194,200,56,211,186,126,99,46,148,43,79,226,235,198,46,85,10,251,65,178,185,98,182,229,35,152,105,170,124,242,
87,102,232,194,168,74,18,208,57,103,98,37,175,105,166,197,136,54,104,20,196,0,183,76,113,249,251,191,241,28,255,251,250,255,246,51,251,245,144,129,10,73,100,6,10,165,44,195,235,207,231,147,142,60,10,2,91,162,245,248,59,22,185,18,117,244,121,63,142,239,138,10,252,63,159,99,213,231,23,240,26,203,232,79,96,82,196,104,196,104,12,82,72,178,78,152,81,210,53,4,109,32,41,26,141,3,23,49,200,73,73,242,203,215,115,172,61,254,121,62,87,61,98,144,211,137,184,255,96,89,175,179,72,73,24,125,24,134,192,149,244,173,126,32,175,220,173,254,105,219,23,125,90,30,247,60,8,254,73,64,83,105,15,0,20,187,61,76,83,6,250,220,121,244,59,171,246,11,126,78,242,121,37,29,188,123,30,194,250,190,96,49,76,106,185,152,113,129,127,180,122,165,237,19,72,19,255,167,5,151,232,125,173,191,187,167,229,117,219,190,61,185,195,179,63,163,192,135,60,175,53,217,218,253,189,39,197,46,145,38,183,30,163,179,221,143,153,222,125,89,191,241,123,14,138,153,
44,152,109,30,68,240,137,216,209,15,195,169,141,168,13,12,15,41,126,126,121,195,2,72,174,250,24,181,242,134,200,253,238,181,78,213,162,128,233,187,71,43,134,213,101,16,19,234,239,99,142,90,238,137,38,230,238,90,22,1,154,254,123,245,9,84,139,241,109,23,63,121,1,73,250,54,11,250,38,136,97,7,246,4,193,224,35,95,191,3,171,81,1,79,107,238,142,255,206,27,242,24,187,79,87,60,139,134,233,26,82,116,55,128,84,102,1,176,147,184,97,0,126,102,0,210,59,209,188,80,8,134,113,60,48,111,96,247,176,87,177,95,192,175,103,178,37,139,248,99,150,10,13,180,39,94,82,81,39,85,126,231,183,31,144,33,101,199,107,227,166,111,40,235,31,155,209,31,50,136,217,215,243,96,228,190,5,194,223,69,11,240,217,44,36,74,91,239,146,108,87,221,0,135,57,45,112,201,131,240,252,53,201,25,130,36,127,119,84,133,51,70,235,205,253,89,238,71,136,115,109,121,188,243,176,69,179,218,15,129,59,34,170,76,52,76,255,103,147,21,111,3,107,112,127,167,
191,42,59,129,141,174,239,201,74,94,24,255,247,110,253,111,115,143,242,127,138,187,22,166,196,149,37,252,87,166,206,61,187,21,86,87,37,138,162,91,91,117,4,20,81,112,57,162,139,104,161,9,97,128,72,200,100,243,224,177,167,206,127,191,61,51,33,204,200,195,4,184,117,183,44,148,100,250,155,254,190,238,233,233,9,90,11,205,39,121,120,32,94,110,152,61,186,125,59,161,207,0,39,111,79,228,176,69,210,191,47,213,218,117,149,134,41,204,241,220,175,156,90,56,60,165,251,32,173,189,165,43,43,131,107,23,213,139,250,137,129,15,156,155,137,55,121,170,100,161,103,63,132,194,208,63,226,185,28,140,187,149,147,195,243,71,167,110,244,108,114,92,31,13,39,112,82,25,246,126,79,46,78,93,223,251,113,223,207,236,252,80,119,58,157,224,225,170,122,125,16,174,33,189,219,170,29,220,94,190,253,234,141,79,119,242,197,227,116,125,120,117,168,194,217,4,114,209,190,158,252,221,239,86,118,158,42,163,118,150,126,198,55,113,50,87,111,185,222,120,191,218,27,223,103,242,
118,67,61,133,253,62,147,14,126,142,61,3,63,222,88,29,179,55,174,95,223,221,154,185,234,245,152,173,207,158,113,215,29,53,74,133,73,174,48,114,111,118,130,155,155,227,19,146,190,233,223,215,179,143,193,145,211,79,227,253,73,14,15,30,107,193,29,156,91,206,139,229,202,21,44,190,171,183,209,81,169,96,31,223,245,159,138,79,80,125,178,70,239,252,141,254,33,99,241,173,222,61,205,252,8,215,255,155,209,162,255,49,3,196,240,184,18,28,150,71,183,167,167,89,99,231,80,247,107,163,253,42,196,84,173,227,78,185,118,20,60,17,239,50,247,247,207,70,57,79,126,229,221,62,36,106,230,100,220,32,63,243,227,6,44,165,147,31,23,133,178,106,59,244,208,187,143,135,23,176,56,187,245,114,233,33,107,135,181,166,250,152,207,190,237,4,233,97,16,244,7,81,140,10,240,85,118,232,99,27,200,143,81,227,199,227,77,127,236,221,79,118,58,118,70,61,135,116,175,195,229,62,253,157,14,213,233,71,245,230,174,225,171,71,109,251,202,53,199,165,193,27,156,214,235,217,
106,45,223,237,94,123,221,138,58,202,62,145,180,158,113,238,75,141,149,181,175,91,170,30,117,74,135,112,34,57,255,254,61,213,108,254,251,239,231,230,179,119,240,13,133,223,158,85,244,19,187,158,238,155,22,70,106,1,121,134,238,251,216,69,93,87,119,122,200,32,182,239,18,11,181,116,15,183,17,177,81,243,249,197,39,142,105,104,103,218,190,182,95,227,131,11,174,62,210,246,61,215,144,175,252,137,109,237,107,224,105,255,17,47,158,105,103,134,165,123,222,139,138,132,203,77,112,99,175,201,93,82,5,215,74,62,10,60,236,161,7,109,71,219,65,116,36,34,46,170,234,166,77,125,4,127,218,120,160,219,109,228,19,212,197,62,106,97,230,187,139,59,46,246,122,200,115,48,245,218,69,142,11,6,166,221,69,191,2,221,50,253,9,159,42,61,21,225,211,87,250,3,250,231,159,244,1,252,187,84,210,106,54,85,100,175,127,165,17,119,229,139,138,242,196,246,124,55,48,124,0,44,96,95,55,173,169,154,199,33,130,151,249,118,22,146,202,251,174,69,185,138,111,21,45,117,
6,3,159,191,32,225,106,83,73,81,203,195,111,168,100,155,190,9,238,253,6,190,126,15,35,38,211,30,119,52,196,143,235,106,53,104,89,166,129,42,24,218,29,23,149,77,207,143,227,42,246,43,4,212,206,225,158,62,52,137,171,41,239,6,136,119,3,87,251,18,210,249,75,57,216,59,216,83,51,153,20,106,17,98,53,95,41,193,119,88,77,229,249,245,101,37,220,11,146,223,55,95,181,47,207,95,254,58,68,3,9,103,42,22,76,224,161,231,79,95,231,71,32,157,203,215,10,47,32,210,97,239,217,40,52,234,97,155,166,84,27,153,182,24,134,189,8,23,163,69,41,206,156,230,41,46,139,20,38,249,11,146,216,157,201,236,247,132,116,139,17,129,43,72,105,11,210,85,83,168,160,218,46,123,229,98,75,42,74,147,54,197,64,104,159,165,48,76,1,33,12,11,162,5,18,14,117,107,12,138,127,127,21,239,67,178,227,230,238,194,0,115,147,201,156,73,71,183,60,28,5,169,212,153,134,136,225,135,33,48,116,27,170,12,84,21,139,46,205,223,132,12,104,44,30,145,
62,54,189,189,69,150,147,38,90,105,218,152,153,198,208,184,71,70,176,146,125,60,246,43,216,14,66,137,215,18,87,70,90,170,173,7,227,22,107,59,175,19,27,139,76,143,221,231,85,128,207,128,6,48,5,227,223,194,136,56,216,134,12,86,92,179,219,243,161,78,152,70,159,22,183,214,4,202,97,71,15,44,63,149,64,140,170,11,112,174,111,98,175,96,117,55,148,67,194,218,190,32,187,243,138,140,76,200,5,88,101,24,233,72,251,99,54,191,246,7,106,67,49,37,221,40,163,108,84,184,200,61,20,33,147,218,92,217,119,195,103,112,186,53,210,39,30,210,29,7,235,110,2,37,75,118,135,196,21,240,85,251,28,106,70,173,254,7,185,99,250,236,2,208,64,22,238,98,216,35,71,166,223,11,215,145,69,192,21,19,182,79,86,14,249,53,48,100,153,132,219,113,41,131,234,231,94,5,118,194,14,244,14,154,98,208,253,17,25,61,125,225,214,48,36,102,155,231,137,100,38,51,103,16,77,137,44,199,11,229,96,22,169,104,39,132,107,138,154,165,35,15,14,82,105,84,
55,237,54,48,110,78,75,57,76,228,69,25,67,187,24,157,170,49,226,163,32,222,220,3,90,65,66,5,25,124,2,246,247,36,111,153,78,139,232,110,91,138,251,50,218,194,248,229,17,151,229,89,93,96,231,41,66,35,196,123,135,112,30,206,185,101,250,3,221,217,139,41,156,144,82,178,51,82,114,177,169,231,229,76,36,223,37,75,156,154,239,210,205,238,35,237,46,121,186,192,162,98,227,97,61,177,239,66,106,220,234,3,174,216,109,96,89,43,53,18,2,206,140,68,153,160,136,66,125,109,211,138,10,173,3,75,17,40,55,216,246,96,193,76,171,201,117,245,162,136,104,227,89,189,133,239,46,70,94,224,56,196,245,113,123,78,195,217,28,160,30,117,12,38,162,84,106,216,162,87,194,90,14,62,233,94,159,185,9,139,209,69,29,216,223,232,27,27,44,167,29,76,2,121,239,120,7,28,181,156,162,170,166,235,67,23,220,92,44,117,104,56,235,74,243,186,101,121,212,189,176,177,9,7,40,41,185,51,93,225,75,17,251,53,104,106,169,47,108,125,47,119,8,66,11,3,
33,176,240,202,188,9,77,193,155,215,249,50,17,58,120,135,253,192,181,121,132,135,166,7,72,81,160,169,237,30,146,78,31,212,155,210,64,239,98,37,197,139,189,203,204,153,53,29,78,181,102,247,41,101,216,106,217,169,98,130,58,129,109,208,130,233,33,203,236,99,52,3,137,173,2,180,98,121,98,209,174,154,215,73,254,230,243,186,109,29,51,95,92,60,95,95,216,205,23,244,224,56,64,152,143,156,71,129,212,52,216,173,185,72,203,130,77,39,83,216,232,216,157,5,246,139,174,217,222,38,229,8,111,83,218,93,0,210,94,227,146,143,166,85,4,187,132,50,212,205,182,15,139,17,14,161,155,144,103,40,50,121,64,148,72,141,216,144,120,164,24,156,34,216,37,32,85,181,136,127,238,98,125,155,241,149,48,55,141,177,163,189,234,241,99,44,77,173,8,182,9,36,57,135,51,200,54,229,136,240,54,149,130,30,142,226,75,17,77,171,8,118,9,101,216,60,221,35,148,101,233,206,157,147,211,125,33,23,158,229,194,240,84,108,42,247,166,63,235,107,195,38,101,237,112,50,
176,101,161,124,215,209,44,12,163,207,0,62,14,32,155,72,97,163,83,156,101,124,178,151,176,113,78,9,179,159,55,163,75,33,150,81,166,247,94,216,36,139,233,118,224,206,125,18,202,20,74,137,172,18,100,44,27,191,205,149,59,3,220,202,6,157,72,5,97,171,78,170,67,89,111,209,63,145,219,90,10,204,240,54,201,1,142,18,131,254,108,58,101,102,151,152,254,54,243,64,64,220,74,34,36,148,66,72,133,245,196,120,220,86,237,227,104,155,20,191,49,131,136,75,253,81,225,227,147,18,110,108,149,112,99,19,194,147,68,132,27,202,100,61,194,234,118,25,171,255,119,202,43,122,213,138,238,118,77,155,183,37,187,242,11,35,253,97,179,59,5,224,138,49,227,143,126,220,176,21,230,51,46,235,129,122,101,220,241,223,61,160,23,238,222,209,167,195,75,111,15,239,137,179,252,102,142,248,62,25,36,232,156,185,167,10,115,105,55,156,123,151,77,178,59,69,91,227,120,65,209,196,176,109,40,231,12,110,153,164,3,126,87,230,189,148,244,12,79,225,134,113,41,22,23,83,
156,127,88,19,122,134,22,26,68,15,105,168,209,167,79,209,147,16,217,223,230,66,219,100,79,46,166,246,16,206,45,134,35,66,75,20,141,85,89,24,33,174,31,15,129,98,172,112,8,36,146,70,99,230,109,162,135,105,83,115,182,198,18,249,42,88,36,247,86,48,158,247,119,69,206,72,110,198,47,182,146,217,214,10,170,164,192,150,146,78,20,38,89,218,9,32,188,68,110,113,113,137,128,91,163,42,130,174,191,196,100,174,177,50,87,102,147,52,117,37,183,19,20,190,30,25,149,217,103,103,27,126,44,202,65,54,248,144,111,89,100,34,108,133,98,36,8,133,72,109,197,175,113,72,35,103,159,9,44,86,92,26,172,36,105,69,153,69,149,120,211,133,94,37,230,70,7,207,41,222,178,110,148,225,191,240,105,248,39,177,244,137,33,137,142,86,97,98,69,170,55,69,80,5,6,174,67,238,113,163,101,61,131,89,182,152,199,177,188,135,163,209,58,206,55,182,227,124,99,153,243,147,88,206,67,207,159,32,199,133,180,138,28,151,34,191,192,217,162,148,61,113,235,204,44,55,
18,117,85,220,236,54,24,192,73,221,219,130,192,33,210,50,141,237,96,240,177,202,33,134,2,131,99,62,40,45,206,17,89,89,209,223,185,154,76,226,169,119,107,200,124,71,70,53,71,55,216,111,85,109,172,244,12,108,35,177,103,48,235,232,45,50,138,33,185,232,115,50,213,5,55,215,16,254,220,54,122,244,145,218,198,162,115,160,165,31,8,240,187,31,106,206,81,20,62,60,169,228,83,46,49,228,158,122,155,76,234,208,187,53,100,190,52,45,107,171,15,47,101,212,4,15,48,167,27,106,7,108,23,116,48,115,208,10,29,152,120,83,202,17,183,13,151,183,206,88,192,93,131,115,139,89,175,96,45,192,43,124,240,59,230,146,215,31,103,164,16,246,136,119,172,135,202,104,30,34,105,178,206,34,152,232,252,186,32,126,235,186,46,5,43,153,243,98,32,222,185,15,177,104,54,255,11,95,25,137,32,
191,42,59,129,141,174,239,201,74,94,24,255,247,110,253,111,115,143,242,127,138,187,26,166,180,149,46,252,87,118,238,123,219,9,213,170,160,40,218,233,76,5,20,81,176,92,209,2,58,104,2,44,16,9,217,52,31,124,244,206,237,111,191,103,119,67,216,240,161,89,200,157,183,211,65,72,246,60,123,158,231,156,61,123,54,216,41,52,159,228,225,129,56,217,81,230,232,246,245,132,62,3,156,190,62,146,195,22,73,254,186,76,85,175,43,52,76,126,142,103,127,102,83,249,195,83,186,15,210,218,91,188,50,210,184,122,81,185,168,157,180,241,129,117,51,117,166,143,229,12,244,236,135,80,24,6,71,60,151,189,73,175,124,114,120,94,183,106,237,190,73,142,107,227,209,20,78,42,163,254,175,233,197,169,237,58,223,239,7,233,157,239,169,157,110,215,123,184,170,92,31,248,107,72,235,181,170,7,183,151,175,63,251,147,211,157,92,225,56,89,27,93,29,166,224,108,2,185,104,94,79,255,26,244,202,59,143,229,113,39,67,191,227,155,90,233,171,215,108,127,178,95,233,79,238,211,
57,179,145,58,133,253,62,157,244,126,76,156,54,174,223,24,93,189,63,169,93,223,221,234,217,202,245,132,173,207,126,251,174,55,110,20,243,211,108,126,108,223,236,120,55,55,199,39,36,121,51,184,175,101,234,222,145,53,72,226,253,105,22,15,235,85,239,14,206,45,231,133,82,249,10,22,223,213,235,248,168,152,55,143,239,6,143,133,71,168,62,153,118,255,252,149,254,67,198,194,107,173,119,154,254,238,175,255,215,118,139,254,199,12,16,195,227,178,119,88,26,223,158,158,102,218,59,135,154,91,29,239,87,32,166,169,26,238,150,170,71,222,35,113,46,179,127,253,104,148,114,228,103,206,30,64,162,166,79,38,13,242,35,55,105,192,82,58,249,126,145,47,165,76,139,30,122,247,241,232,2,22,103,175,86,42,62,100,76,191,214,84,234,185,204,235,142,151,28,121,222,96,24,196,40,15,127,75,22,125,108,3,249,49,110,124,175,223,12,38,206,253,116,167,107,166,83,231,144,238,53,184,60,160,191,211,145,178,6,65,189,185,107,184,169,163,142,121,101,235,147,226,240,21,78,235,
181,76,165,154,235,245,174,157,94,57,53,206,60,146,164,150,182,238,139,141,55,107,95,175,88,57,234,22,15,225,68,114,254,245,107,162,217,252,231,159,143,205,39,231,224,11,242,127,60,165,208,15,108,59,154,171,27,24,165,242,200,105,107,174,139,109,212,179,53,171,143,218,196,116,109,98,160,150,230,224,14,34,38,106,62,61,187,196,210,219,234,153,186,175,238,87,249,224,188,173,141,213,125,199,110,135,175,252,137,77,245,179,231,168,255,19,47,158,169,103,109,67,115,156,231,20,18,46,55,193,141,189,38,119,41,37,184,86,116,145,231,96,7,61,168,59,234,14,162,35,17,177,81,69,211,77,234,35,248,211,193,67,205,236,32,151,160,30,118,81,11,51,223,109,220,181,177,211,71,142,133,169,215,54,178,108,48,208,205,30,250,233,105,134,238,78,249,84,201,153,8,31,62,211,55,232,239,191,147,7,240,231,82,73,166,50,137,2,123,253,150,68,220,149,79,41,148,35,166,227,218,94,219,5,192,60,118,53,221,152,169,121,236,35,56,233,47,103,62,169,156,107,27,148,171,248,
81,81,19,103,48,240,233,19,18,174,54,149,4,181,60,252,130,138,166,238,234,224,222,47,224,235,246,49,98,50,237,113,71,125,252,168,174,86,188,150,161,183,81,25,67,187,99,163,146,238,184,81,92,197,110,153,128,218,89,220,215,70,58,177,85,101,97,128,120,215,179,213,79,62,157,111,202,193,222,193,94,42,157,78,160,22,33,70,243,133,18,92,192,106,42,79,47,207,111,194,61,163,240,231,230,139,250,233,233,211,183,67,52,12,225,204,196,130,9,28,244,244,225,243,242,8,164,113,249,90,254,5,68,186,236,51,27,133,198,125,108,210,148,234,32,221,20,195,176,23,224,98,180,42,197,153,211,60,197,195,34,249,73,254,140,66,236,206,194,236,247,132,116,139,16,129,43,72,105,3,210,85,85,168,160,234,46,123,229,98,135,84,12,77,218,20,3,161,126,12,133,97,6,8,97,88,17,45,144,112,164,25,19,80,252,235,139,120,31,146,29,55,119,87,6,152,155,76,151,76,186,154,225,224,32,72,197,238,44,68,12,223,15,65,91,51,161,202,64,85,49,232,210,252,69,200,
144,198,162,142,180,137,238,236,173,178,156,190,109,217,152,91,190,47,113,97,65,145,122,176,42,87,165,241,210,232,249,106,189,195,174,103,155,14,19,9,233,221,168,220,130,165,44,225,99,67,202,199,70,224,227,239,223,191,147,199,199,71,114,190,54,228,124,173,246,201,24,10,163,139,39,110,25,155,158,159,177,27,229,106,24,105,109,170,58,48,110,117,170,46,167,29,27,139,116,159,57,43,170,124,6,52,132,41,152,2,45,140,136,133,77,40,8,138,173,247,250,46,148,93,189,61,160,123,69,107,10,187,75,87,243,12,55,17,117,253,194,116,21,27,224,108,87,199,78,222,232,109,41,71,8,43,126,65,118,151,21,25,235,144,13,80,180,48,210,144,250,199,124,126,245,15,212,129,189,137,244,130,5,106,162,252,69,246,161,0,185,212,225,202,46,12,159,195,105,198,88,155,58,72,179,44,172,217,18,74,22,205,46,137,42,224,139,250,209,215,140,90,253,7,185,163,187,236,2,208,64,6,238,97,104,57,198,186,219,247,87,146,65,192,21,29,186,17,182,187,240,107,96,200,50,9,
119,162,82,6,213,207,157,50,52,22,93,104,197,84,165,77,219,13,212,238,107,43,119,218,17,209,59,60,79,66,102,97,230,12,162,25,34,203,241,124,57,152,69,34,104,44,224,154,146,202,208,145,7,7,137,36,170,233,102,7,24,55,103,59,35,76,228,4,25,67,155,66,141,170,49,230,163,32,222,220,3,90,67,124,5,25,188,4,251,123,146,51,116,171,69,52,187,19,138,251,58,218,194,248,245,17,15,203,243,246,126,181,76,17,250,74,222,138,249,243,112,206,45,221,29,106,214,94,68,225,132,148,10,59,19,74,46,54,245,178,156,82,242,93,178,196,169,186,54,237,29,222,211,238,146,167,11,44,42,54,30,214,19,251,41,164,198,173,54,228,138,221,122,134,241,166,70,66,192,153,145,40,19,20,81,168,175,29,90,81,161,19,99,41,2,229,6,155,14,44,152,89,53,185,174,92,20,16,237,227,43,183,240,211,198,200,241,44,139,216,46,238,44,105,56,159,3,212,163,142,193,68,148,74,21,27,244,138,95,203,193,39,205,25,48,55,97,49,218,168,11,59,28,253,96,130,
229,172,33,148,144,247,142,31,40,86,237,195,35,221,118,225,80,209,92,45,181,111,56,111,27,114,154,97,56,212,61,191,79,244,7,40,9,153,238,160,10,103,4,234,11,91,223,235,29,130,208,194,64,8,44,188,206,90,5,246,94,73,188,44,151,137,197,190,6,20,26,233,14,32,5,129,166,182,123,40,116,152,163,222,20,135,90,15,43,9,94,236,109,102,206,172,233,112,170,53,187,79,41,195,86,203,14,105,83,212,245,204,54,45,152,14,50,244,1,70,115,144,232,125,7,118,115,196,160,135,20,94,39,249,135,143,155,118,201,204,124,117,241,124,121,102,55,159,209,131,101,1,97,62,114,25,5,82,179,205,110,45,69,58,44,216,108,50,133,141,142,220,89,96,183,96,235,157,56,41,7,120,219,210,238,1,144,250,18,149,124,48,173,34,216,73,202,80,211,59,46,44,70,56,211,111,67,158,161,132,201,3,98,136,212,152,13,137,70,138,193,41,130,157,4,169,138,65,220,115,27,107,113,198,55,132,185,109,140,45,245,69,139,30,227,208,212,138,96,43,33,201,57,156,66,226,
148,35,192,219,86,10,122,60,138,46,69,48,173,34,216,73,202,176,125,186,7,40,235,210,157,59,23,78,247,149,92,120,150,11,195,19,145,169,220,235,238,188,175,245,155,148,141,195,201,192,214,133,114,161,163,89,25,70,151,1,188,31,64,54,145,194,70,39,56,203,232,100,47,97,227,156,17,102,239,183,163,75,33,214,81,166,247,158,217,36,171,233,118,225,206,189,12,101,10,165,4,86,18,25,203,198,199,185,114,231,128,177,108,208,82,42,8,91,181,172,14,37,173,69,255,197,97,108,41,48,199,219,38,7,56,74,4,250,243,233,148,185,157,52,253,56,243,64,64,140,37,17,36,165,16,82,97,51,49,234,113,213,62,142,182,77,241,155,48,136,168,212,235,10,31,47,75,184,17,43,225,198,54,132,167,82,132,27,202,116,51,194,169,120,25,167,254,239,148,223,232,85,203,154,221,211,77,222,150,236,134,95,24,233,119,155,221,25,0,87,140,25,191,247,118,203,86,152,207,184,174,7,234,151,112,215,93,248,190,67,184,123,71,159,14,175,189,61,186,39,214,250,155,89,226,186,
100,40,209,57,115,79,21,230,210,174,63,247,46,155,100,119,134,182,193,241,130,162,137,97,219,82,206,57,220,58,73,135,252,110,152,247,90,210,115,60,133,27,70,165,88,88,77,113,249,97,141,239,25,90,105,16,60,164,161,70,31,62,4,79,66,194,254,54,87,218,202,61,185,152,217,67,56,99,12,71,128,38,21,141,183,178,48,64,220,60,30,2,197,72,225,16,72,200,70,99,238,173,212,195,180,153,57,91,99,82,190,10,22,242,222,10,198,203,254,190,145,51,33,55,163,23,219,144,89,108,5,53,164,64,76,73,39,10,35,151,118,2,8,47,145,49,46,46,17,48,54,170,34,232,230,75,44,204,53,82,230,134,217,200,166,110,200,109,137,194,215,39,227,18,251,238,108,203,175,69,57,200,22,95,242,173,139,76,128,173,80,12,137,80,136,212,222,254,170,94,244,127,241,87,9,150,158,172,11,14,201,180,162,204,162,66,156,217,66,175,16,125,171,131,231,12,111,93,55,202,240,159,249,52,252,155,88,250,196,144,4,71,43,63,177,214,168,222,20,167,80,192,108,19,170,245,
173,22,249,28,102,221,210,158,108,192,5,142,77,155,80,105,196,67,165,177,142,202,116,3,42,112,58,144,88,13,66,2,6,52,66,57,178,194,245,66,40,207,162,86,164,121,222,72,245,95,220,236,214,27,194,153,222,137,65,110,31,105,157,226,166,55,148,213,220,71,84,192,52,226,3,214,194,18,173,55,119,130,5,199,229,4,159,121,183,129,232,119,100,92,181,180,54,251,229,182,173,117,159,131,197,40,253,28,116,19,245,69,126,17,2,32,50,144,139,129,224,230,6,97,56,55,219,125,250,96,110,235,16,112,160,181,95,43,240,187,146,17,224,152,10,55,150,13,192,140,89,4,241,103,190,203,9,239,123,183,129,232,151,186,97,196,250,64,52,140,42,241,80,116,182,73,119,193,54,202,19,162,240,68,10,53,147,222,218,178,196,238,192,229,216,249,11,184,27,40,208,98,214,145,53,16,38,83,184,233,130,14,33,14,239,103,171,144,18,129,10,145,30,98,163,101,8,217,68,158,199,83,234,188,188,34,154,155,186,30,10,157,156,243,98,32,22,220,135,88,52,155,255,2,214,124,
32,40,