diff --git a/uppsrc/ScatterCtrl/Properties.cpp b/uppsrc/ScatterCtrl/Properties.cpp index b97499d29..a7aa4de4d 100644 --- a/uppsrc/ScatterCtrl/Properties.cpp +++ b/uppsrc/ScatterCtrl/Properties.cpp @@ -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)) diff --git a/uppsrc/ScatterCtrl/Properties.h b/uppsrc/ScatterCtrl/Properties.h index b903503f9..7b2b87936 100644 --- a/uppsrc/ScatterCtrl/Properties.h +++ b/uppsrc/ScatterCtrl/Properties.h @@ -1,9 +1,21 @@ #ifndef _ScatterCtrl_Properties_h_ #define _ScatterCtrl_Properties_h_ -class GeneralTab : public WithGeneral { +class MeasuresTab : public WithMeasures { public: - typedef GeneralTab CLASSNAME; + typedef MeasuresTab CLASSNAME; + + void Init(ScatterCtrl &scatter); + +private: + ScatterCtrl *pscatter; + + void Change(); +}; + +class TextsTab : public WithTexts { +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; diff --git a/uppsrc/ScatterCtrl/ScatterCtrl.cpp b/uppsrc/ScatterCtrl/ScatterCtrl.cpp index ac7a4bf91..9cbf746ef 100644 --- a/uppsrc/ScatterCtrl/ScatterCtrl.cpp +++ b/uppsrc/ScatterCtrl/ScatterCtrl.cpp @@ -422,6 +422,17 @@ void ScatterCtrl::InsertSeries(int id, ArrayCtrl &data, bool useCols, int idX, i InsertSeries(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(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(id, data, useCols, idX, idY, beginData, numData); +} + ScatterCtrl::ScatterCtrl() : offset(10,12), copyRatio(1) { paintInfo = mouseHandlingX = mouseHandlingY = isScrolling = isLabelPopUp = false; diff --git a/uppsrc/ScatterCtrl/ScatterCtrl.h b/uppsrc/ScatterCtrl/ScatterCtrl.h index 07a486a7f..12557f358 100644 --- a/uppsrc/ScatterCtrl/ScatterCtrl.h +++ b/uppsrc/ScatterCtrl/ScatterCtrl.h @@ -39,7 +39,7 @@ public: } } void Init(ArrayCtrl &_data, int idY, int idX, bool _useCols = true, int _beginData = 0, int _numData = Null) { - Vector ids; + //Vector 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 &_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()) + 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;} diff --git a/uppsrc/ScatterCtrl/ScatterCtrl.lay b/uppsrc/ScatterCtrl/ScatterCtrl.lay index 44233e04d..4fa1896e6 100644 --- a/uppsrc/ScatterCtrl/ScatterCtrl.lay +++ b/uppsrc/ScatterCtrl/ScatterCtrl.lay @@ -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) diff --git a/uppsrc/ScatterCtrl/ScatterCtrl.t b/uppsrc/ScatterCtrl/ScatterCtrl.t index 6d27177ca..6b72f7b5e 100644 --- a/uppsrc/ScatterCtrl/ScatterCtrl.t +++ b/uppsrc/ScatterCtrl/ScatterCtrl.t @@ -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") diff --git a/uppsrc/ScatterCtrl/ScatterCtrl.upp b/uppsrc/ScatterCtrl/ScatterCtrl.upp index 463e6b875..5c0feaa93 100644 --- a/uppsrc/ScatterCtrl/ScatterCtrl.upp +++ b/uppsrc/ScatterCtrl/ScatterCtrl.upp @@ -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, diff --git a/uppsrc/ScatterCtrl/init b/uppsrc/ScatterCtrl/init index 8fd31ff34..71cde834f 100644 --- a/uppsrc/ScatterCtrl/init +++ b/uppsrc/ScatterCtrl/init @@ -3,4 +3,5 @@ #include "CtrlLib/init" #include "plugin\jpg/init" #include "ScatterDraw/init" +#include "GridCtrl/init" #endif diff --git a/uppsrc/ScatterCtrl/src.tpp/ScatterCtrl$en-us.tpp b/uppsrc/ScatterCtrl/src.tpp/ScatterCtrl$en-us.tpp index 17db2c226..f4b7ec1f3 100644 --- a/uppsrc/ScatterCtrl/src.tpp/ScatterCtrl$en-us.tpp +++ b/uppsrc/ScatterCtrl/src.tpp/ScatterCtrl$en-us.tpp @@ -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 diff --git a/uppsrc/ScatterCtrl/src.tpp/ScatterCtrl$en-us.tppi b/uppsrc/ScatterCtrl/src.tpp/ScatterCtrl$en-us.tppi index 96716c600..419320d0d 100644 --- a/uppsrc/ScatterCtrl/src.tpp/ScatterCtrl$en-us.tppi +++ b/uppsrc/ScatterCtrl/src.tpp/ScatterCtrl$en-us.tppi @@ -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,