Controls4U: Removed multiple warnings got using compiler pedantic options

git-svn-id: svn://ultimatepp.org/upp/trunk@13570 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
koldo 2019-09-02 06:30:11 +00:00
parent 79467fb794
commit ed1bbdd32d
9 changed files with 169 additions and 160 deletions

View file

@ -21,7 +21,7 @@ static const CLSID CLSID_MozillaBrowser = {0x1339B54C, 0x3453, 0x11D2, {0x93, 0x
class FirefoxBrowser : public DHCtrlActiveX {
public:
FirefoxBrowser(bool status = true) : DHCtrlActiveX(CLSID_MozillaBrowser, "Firefox", status) {};
FirefoxBrowser(bool _status = true) : DHCtrlActiveX(CLSID_MozillaBrowser, "Firefox", _status) {};
virtual ~FirefoxBrowser() {};
bool Browse(const String &url);
@ -42,7 +42,7 @@ private:
public:
IIWebBrowser(FirefoxBrowser *obj) {
if (obj->GetStatus())
web = (IWebBrowser2 *)obj->QueryInterface(IID_IWebBrowser2);
web = static_cast<IWebBrowser2 *>(obj->QueryInterface(IID_IWebBrowser2));
else
web = 0;
}
@ -59,7 +59,7 @@ private:
class InternetExplorerBrowser : public DHCtrlActiveX {
public:
InternetExplorerBrowser(bool status = true) : DHCtrlActiveX(CLSID_WebBrowser, "IExplorer", status) {};
InternetExplorerBrowser(bool _status = true) : DHCtrlActiveX(CLSID_WebBrowser, "IExplorer", _status) {};
virtual ~InternetExplorerBrowser() {};
bool Browse(const String &url);
@ -80,7 +80,7 @@ private:
public:
IIWebBrowser(InternetExplorerBrowser *obj) {
if (obj->GetStatus())
web = (IWebBrowser2 *)obj->QueryInterface(IID_IWebBrowser2);
web = static_cast<IWebBrowser2 *>(obj->QueryInterface(IID_IWebBrowser2));
else
web = 0;
}
@ -100,7 +100,7 @@ static const CLSID CLSID_VLCPLayer = {0x9BE31822, 0xFDAD, 0x461B, {0xAD, 0x51, 0
class VLCPlayer : public DHCtrlActiveX {
public:
VLCPlayer(bool status = true) : DHCtrlActiveX(CLSID_VLCPLayer, "VLCPlayer", status) {};
VLCPlayer(bool _status = true) : DHCtrlActiveX(CLSID_VLCPLayer, "VLCPlayer", _status) {};
virtual ~VLCPlayer() {};
bool AddTarget(const String movie);
@ -124,7 +124,7 @@ private:
public:
IIVLC(VLCPlayer *obj) {
if (obj->GetStatus())
vlc = (IVLCControl *)obj->QueryInterface(IID_IVLCControl);
vlc = static_cast<IVLCControl *>(obj->QueryInterface(IID_IVLCControl));
else
vlc = 0;
}

View file

@ -24,7 +24,7 @@ public:
operator BSTR *() {return &bstr;}
operator BSTR () {return bstr;}
String ToString() {
WString ret((wchar *)bstr);
WString ret(static_cast<wchar *>(bstr));
return ret.ToString();
}
private:
@ -34,7 +34,7 @@ private:
class AXClientSite : public IOleClientSite, public IOleInPlaceFrame, public IOleInPlaceSite {
public:
AXClientSite() {}
AXClientSite(HWND hwnd):hwnd(hwnd){}
AXClientSite(HWND _hwnd) : hwnd(_hwnd){}
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void __RPC_FAR *__RPC_FAR *ppvObject);
virtual ULONG STDMETHODCALLTYPE AddRef();

View file

@ -106,8 +106,8 @@ EditFileFolder &EditFileFolder::UseHistory(bool use) {
EditFileFolder &EditFileFolder::UseUp(bool use) {
if (use) {
if (EditString::FindFrame(butUp) == -1) {
int pos = EditString::FindFrame(butRight);
EditString::InsertFrame(pos+1, butUp);
int _pos = EditString::FindFrame(butRight);
EditString::InsertFrame(_pos+1, butUp);
}
} else
EditString::RemoveFrame(butUp);
@ -117,10 +117,10 @@ EditFileFolder &EditFileFolder::UseUp(bool use) {
EditFileFolder &EditFileFolder::UseBrowse(bool use) {
if (use) {
if (EditString::FindFrame(butBrowseLeft) == -1) {
int pos = EditString::FindFrame(butUp);
if (pos == -1)
pos = EditString::FindFrame(butRight);
EditString::InsertFrame(pos+1, butBrowseLeft);
int _pos = EditString::FindFrame(butUp);
if (_pos == -1)
_pos = EditString::FindFrame(butRight);
EditString::InsertFrame(_pos+1, butBrowseLeft);
}
} else
EditString::RemoveFrame(butBrowseLeft);
@ -130,8 +130,8 @@ EditFileFolder &EditFileFolder::UseBrowse(bool use) {
EditFileFolder &EditFileFolder::UseBrowseRight(bool use) {
if (use) {
if (EditString::FindFrame(butBrowseRight) == -1) {
int pos = EditString::FindFrame(butRight);
EditString::InsertFrame(pos+1, butBrowseRight);
int _pos = EditString::FindFrame(butRight);
EditString::InsertFrame(_pos+1, butBrowseRight);
}
} else
EditString::RemoveFrame(butBrowseRight);
@ -141,8 +141,8 @@ EditFileFolder &EditFileFolder::UseBrowseRight(bool use) {
EditFileFolder &EditFileFolder::UseGo(bool use) {
if (use) {
if (EditString::FindFrame(butGo) == -1) {
int pos = EditString::FindFrame(butRight);
EditString::InsertFrame(pos+1, butGo);
int _pos = EditString::FindFrame(butRight);
EditString::InsertFrame(_pos+1, butGo);
}
} else
EditString::RemoveFrame(butGo);
@ -199,10 +199,11 @@ void EditFileFolder::DoGo(bool add) {
if (histInd >= history.GetCount()-1)
butRight.Enable(false);
}
AddHistory();
WhenChange();
//WhenAction();
Accept();
if (WhenChange()) {
AddHistory();
//WhenAction();
Accept();
}
}
void EditFileFolder::DoLeft() {
@ -238,8 +239,11 @@ EditFile::EditFile() {
EditFileFolder();
butBrowseRight.Tip(t_("Browse file"));
butFolder.WhenAction = [&] {
String folder = GetFileFolder(String(GetData()));
if (!DirectoryExists(folder))
String fileName = GetData();
String folder = GetFileFolder(fileName);
if (Trim(fileName).IsEmpty())
Exclamation(t_("No file set"));
else if (!DirectoryExists(folder))
Exclamation(::Format(t_("Folder '%s' does not exist"), DeQtf(folder)));
else {
if (folder.StartsWith("\\"))
@ -252,12 +256,14 @@ EditFile::EditFile() {
EditFolder::EditFolder() {
isFile = false;
title = t_("Select directory");
title = t_("Select folder");
EditFileFolder();
butBrowseRight.Tip(t_("Browse folder"));
butFolder.WhenAction = [&] {
String folder = GetData();
if (!DirectoryExists(folder))
if (Trim(folder).IsEmpty())
Exclamation(t_("No folder set"));
else if (!DirectoryExists(folder))
Exclamation(::Format(t_("Folder '%s' does not exist"), DeQtf(folder)));
else
LaunchWebBrowser(folder);};
@ -280,8 +286,8 @@ void ImagePopUp::Paint(Draw &w) {
switch (fit) {
case StaticImage::BestFit: {
Rect rect = FitInFrame(sz, imagesize);
sz = rect.GetSize();
Rect _rect = FitInFrame(sz, imagesize);
sz = _rect.GetSize();
w.DrawImage(sz, image);
break; }
case StaticImage::FillFrame:
@ -292,8 +298,8 @@ void ImagePopUp::Paint(Draw &w) {
break;
case StaticImage::RepeatToFill:
for (int left = 0; left < sz.cx; left += imagesize.cx)
for (int top = 0; top < sz.cy; top += imagesize.cy)
w.DrawImage(left, top, image);
for (int _top = 0; _top < sz.cy; _top += imagesize.cy)
w.DrawImage(left, _top, image);
break;
}
@ -390,7 +396,7 @@ void ImagePopUp::Close() {
Ctrl::Close();
}
void StaticImage::MouseEnter(Point pos, dword keyflags) {
void StaticImage::MouseEnter(Point, dword) {
if (isPopUp) {
Point pt = GetScreenRect().TopLeft();
popup.PopUp(this, pt.x, pt.y, szPopUp.cx, szPopUp.cy, origImage, angle, fit);
@ -405,7 +411,7 @@ void StaticImage::MouseLeave() {
void StaticImage::Layout() {
if (useAsBackground) {
//Ctrl *q = GetFirstChild();
SetFirstChild((Ctrl *)this);
SetFirstChild(static_cast<Ctrl *>(this));
SizePos();
}
}
@ -449,8 +455,8 @@ void StaticImage::Paint(Draw& w) {
break;
case StaticImage::RepeatToFill:
for (int left = 0; left < sz.cx; left += imagesize.cx)
for (int top = 0; top < sz.cy; top += imagesize.cy)
w.DrawImage(left, top, *imageView);
for (int _top = 0; _top < sz.cy; _top += imagesize.cy)
w.DrawImage(left, _top, *imageView);
break;
}
}
@ -492,21 +498,21 @@ StaticImage& StaticImage::SetAngle(int _angle) {
return *this;
}
void StaticImage::RightDown(Point pos, dword keyflags) {
void StaticImage::RightDown(Point , dword ) {
if(!IsEditable())
return;
WhenRightDown();
}
void StaticImage::LeftDown(Point pos, dword keyflags) {
void StaticImage::LeftDown(Point , dword ) {
if(!IsEditable())
return;
WhenLeftDown();
}
void StaticImage::LeftDouble(Point pos, dword keyflags) {
void StaticImage::LeftDouble(Point , dword ) {
if(!IsEditable())
return;
@ -540,7 +546,7 @@ void StaticImageSet::Paint(Draw& w) {
w.DrawImage(FitInFrame(sz, imagesize), images[id]);
}
void StaticImageSet::LeftDown(Point pos, dword keyflags)
void StaticImageSet::LeftDown(Point , dword )
{
if(!IsEditable())
return;
@ -552,13 +558,13 @@ void StaticImageSet::LeftDown(Point pos, dword keyflags)
Refresh();
}
void StaticImageSet::LeftRepeat(Point pos, dword keyflags)
void StaticImageSet::LeftRepeat(Point _pos, dword keyflags)
{
if(!HasCapture())
LeftDown(pos, keyflags);
LeftDown(_pos, keyflags);
}
void StaticImageSet::LeftUp(Point pos, dword keyflags)
void StaticImageSet::LeftUp(Point , dword )
{
if (!HasCapture())
return;
@ -566,7 +572,7 @@ void StaticImageSet::LeftUp(Point pos, dword keyflags)
Refresh();
}
void StaticImageSet::MouseMove(Point pos, dword keyflags)
void StaticImageSet::MouseMove(Point , dword )
{
if(!HasCapture())
return;
@ -739,7 +745,7 @@ void PaintArrowEnd(Painter &sw, double x0, double y0, double x1, double y1, int
sw.Move(x0, y0).Line(x0 + alen, y0 - awidth).Line(x0 + alen, y0 + awidth).Line(x0, y0);
sw.Fill(color);
} else {
double t = atan((y1-y0)/(double)(x1-x0));
double t = atan((y1-y0)/static_cast<double>(x1-x0));
double xa = alen*cos(t);
double ya = alen*sin(t);
double xb = awidth*sin(t);
@ -817,7 +823,7 @@ void StaticArrow::FramePaint(Draw& w, const Rect& rr) {
x0 += 8*width;
} else {
PaintArrowEnd(sw, x0, y0, x1, y1, width, color, true);
double t = atan((y1-y0)/(double)(x1-x0));
double t = atan((y1-y0)/static_cast<double>(x1-x0));
x0 += 8*width*cos(t);
y0 += 8*width*sin(t);
}
@ -831,7 +837,7 @@ void StaticArrow::FramePaint(Draw& w, const Rect& rr) {
x1 -= 8*width;
} else {
PaintArrowEnd(sw, x1, y1, x0, y0, width, color, false);
double t = atan((y1-y0)/(double)(x1-x0));
double t = atan((y1-y0)/static_cast<double>(x1-x0));
x1 -= 8*width*cos(t);
y1 -= 8*width*sin(t);
}
@ -909,9 +915,9 @@ StaticArrow::StaticArrow() {
ends = EndLeft;
}
void StaticClock::PaintPtr(BufferPainter &w, double cmx, double cmy, double pos, double m, double d, Color color, double cf) {
double dx = m * sin(pos * 2 * M_PI);
double dy = m * cos(pos * 2 * M_PI);
void StaticClock::PaintPtr(BufferPainter &w, double cmx, double cmy, double _pos, double m, double d, Color color, double cf) {
double dx = m * sin(_pos * 2 * M_PI);
double dy = m * cos(_pos * 2 * M_PI);
double sx = cmx - dx * 35 / 2.0;
double sy = cmy + dy * 35 / 2.0;
@ -986,16 +992,16 @@ void StaticClock::Paint(Draw& ww) {
double numberd = numberPos - 0.2;
Font fnt, fnt4;
if (numberType == StaticClock::Small) {
fnt4 = Arial((int)(14*bigF));
fnt = Arial((int)(14*bigF));
fnt4 = Arial(static_cast<int>(14*bigF));
fnt = Arial(static_cast<int>(14*bigF));
} else if (numberType == StaticClock::Big) {
fnt4 = Arial((int)(20*bigF));
fnt = Arial((int)(20*bigF));
fnt4 = Arial(static_cast<int>(20*bigF));
fnt = Arial(static_cast<int>(20*bigF));
} else if (numberType == StaticClock::BigSmall) {
fnt4 = Arial((int)(20*bigF));
fnt = Arial((int)(14*bigF));
fnt4 = Arial(static_cast<int>(20*bigF));
fnt = Arial(static_cast<int>(14*bigF));
} else if (numberType == StaticClock::Big4) {
fnt4 = Arial((int)(20*bigF));
fnt4 = Arial(static_cast<int>(20*bigF));
}
for(int i = 1; i <= 12; i++) {
double x = cmx + (numberd * sin(i * M_PI / 6.0) * cf);
@ -1043,7 +1049,7 @@ StaticClock& StaticClock::SetImage(String _fileName) {
}
void StaticClock::SetData(const Value& v) {
SetTime((Time) v);
SetTime(static_cast<Time>(v));
}
void StaticClock::SetTime(const Time& tm) {
@ -1149,16 +1155,16 @@ StaticClock::~StaticClock() {
}
void Meter::PaintMarks(BufferPainter &w, double cx, double cy, double R, double ang0,
double ang1, int direction, double step, double bigF, Color color) {
double ang1, int direction, double _step, double bigF, Color color) {
if (direction == -1)
Swap(ang0, ang1);
ang0 = ToRad(ang0);
ang1 = ToRad(ang1);
step = ToRad(step);
_step = ToRad(_step);
if (ang0 > ang1)
ang1 += 2*M_PI;
double width = 6*bigF;
for (double i = ang0; i <= ang1+0.1; i += step) {
for (double i = ang0; i <= ang1+0.1; i += _step) {
double x0 = cx + R*cos(i);
double y0 = cy - R*sin(i);
double x1 = cx + 0.93*R*cos(i);
@ -1168,25 +1174,25 @@ void Meter::PaintMarks(BufferPainter &w, double cx, double cy, double R, double
}
void Meter::PaintNumbers(BufferPainter &w, double cx, double cy, double R, double a0,
double step, int direction, double minv, double maxv, double stepv, double bigF, Color color)
double _step, int direction, double minv, double maxv, double stepv, double bigF, Color color)
{
a0 = ToRad(a0);
step = ToRad(step);
Font fnt = Arial((int)(13*bigF));
_step = ToRad(_step);
Font fnt = Arial(static_cast<int>(13*bigF));
while (minv <= maxv) {
double x = cx + 0.8*R*cos(a0);
double y = cy - 0.8*R*sin(a0);
PaintCenterText(w, x, y, FormatDouble(minv), fnt, color);
a0 += step*direction;
a0 += _step*direction;
minv += stepv;
}
}
void Meter::PaintHand(BufferPainter &w, double cx, double cy, double R, double val,
double bigF, int colorType)
double bigF, int _colorType)
{
Color letterColor;
if (colorType == WhiteType) {
if (_colorType == WhiteType) {
letterColor = Black();
} else {
letterColor = White();
@ -1291,9 +1297,9 @@ void Meter::Paint(Draw& ww) {
if (peak < max && peak > min) {
double valpk = peak*maxgrad/(max-min);
for (double i = 0.93; i < 0.98; i+= 0.004)
PaintArc(w, cx, cy, i*R, a + valpk*direction, b, direction, (int)(2*bigF), LtRed());
PaintArc(w, cx, cy, i*R, a + valpk*direction, b, direction, static_cast<int>(2*bigF), LtRed());
double fsize = 7*Upp::min(bigF, bigH);
Font fnt = Arial((int)fsize);
Font fnt = Arial(static_cast<int>(fsize));
double txtx = cx + R*cos(ToRad(b))/2;
double txty = cy - R*sin(ToRad(b))/2;
PaintCenterText(w, txtx, txty, " PEAK", fnt, Gray());
@ -1302,14 +1308,15 @@ void Meter::Paint(Draw& ww) {
light = Controls4UImg::LightOff();
else
light = Controls4UImg::LightOn();
w.DrawImage((int)(txtx - fsize*2/3.), (int)(txty + fsize), (int)(1.8*fsize), (int)(1.8*fsize), light);
w.DrawImage(static_cast<int>(txtx - fsize*2/3.), static_cast<int>(txty + fsize),
static_cast<int>(1.8*fsize), static_cast<int>(1.8*fsize), light);
}
double stepa = step*maxgrad/(max-min);
PaintMarks(w, cx, cy, R, a, b, direction, stepa, bigF, letterColor);
if (number)
PaintNumbers(w, cx, cy, R, a, stepa, direction, min, max, step, bigF, letterColor);
Font fnt = Arial((int)(20*Upp::min(bigF, bigH)));
Font fnt = Arial(static_cast<int>(20*Upp::min(bigF, bigH)));
double angtxt = ToRad(a + maxgrad*direction/2);
double txtx = cx + R*cos(angtxt)/2;
double txty = cy - R*sin(angtxt)/2;
@ -1342,7 +1349,7 @@ void Meter::Paint(Draw& ww) {
void MeterThread(Meter *gui, double newValue) {
double delta = Sign(newValue-gui->value)*(gui->max - gui->min)/gui->sensibility;
long deltaT = labs(long(1000.*delta*gui->speed/(gui->max - gui->min)));
int maxi = (int)(fabs((newValue-gui->value)/delta));
int maxi = static_cast<int>(fabs((newValue-gui->value)/delta));
//long t0 = GetTickCount();
for (int i = 0; i < maxi; ++i, gui->value += delta) {
@ -1409,11 +1416,11 @@ Knob::Knob() : value(0), minv(0), maxv(100), minorstep(10), majorstep(20), keySt
}
void Knob::PaintMarks(BufferPainter &w, double cx, double cy, double R, double begin, double end,
double ang0, double ang1, int direction, double minorstep, double bigF, Color color) {
double ang0, double ang1, int direction, double _minorstep, double bigF, Color color) {
if (direction == -1)
Swap(ang0, ang1);
ang0 = ToRad(ang0);
minorstep = ToRad(minorstep);
minorstep = ToRad(_minorstep);
double width = bigF;
int inum = 0;
int imin = nminor;
@ -1436,20 +1443,20 @@ void Knob::PaintMarks(BufferPainter &w, double cx, double cy, double R, double b
}
void Knob::PaintNumbers(BufferPainter &w, double cx, double cy, double R, double a0,
double step, int direction, double minv, double maxv, double stepv, double bigF, Color color) {
double range = maxv - minv;
double step, int direction, double _minv, double _maxv, double stepv, double bigF, Color color) {
double range = _maxv - _minv;
a0 = ToRad(a0);
step = ToRad(step);
Font fnt = Arial(3+(int)(4*bigF));
Font fnt = Arial(3+static_cast<int>(4*bigF));
String strminv;
String strmaxv = FormatDoubleAdjust(maxv, range);
String strmaxv = FormatDoubleAdjust(_maxv, range);
while (strminv != strmaxv) {
double x = cx + 0.8*R*cos(a0);
double y = cy - 0.8*R*sin(a0);
strminv = FormatDoubleAdjust(minv, range);
strminv = FormatDoubleAdjust(_minv, range);
PaintCenterText(w, x, y, strminv, fnt, color);
a0 += step*direction;
minv += stepv;
_minv += stepv;
}
}
@ -1544,28 +1551,28 @@ void Knob::Layout() {
}
}
{
ImageBuffer ib(int(2*r)+1, int(2*r)+1);
BufferPainter sw(ib);
sw.Clear(RGBAZero());
ImageBuffer _ib(int(2*r)+1, int(2*r)+1);
BufferPainter _sw(_ib);
_sw.Clear(RGBAZero());
if (colorType == WhiteType) {
if (mark == Circle)
sw.Circle(r, r, r).Fill(1.5*r, 1.5*r, White(), r, r, r, LtGray());
_sw.Circle(r, r, r).Fill(1.5*r, 1.5*r, White(), r, r, r, LtGray());
} else if (colorType == BlackType) {
if (mark == Circle) {
Color lineColor = (colorType == WhiteType) ? Black() : White();
Color almostColor = (colorType == WhiteType) ? Color(220, 220, 220) : Color(60, 60, 60);
sw.Circle(r, r, r).Fill(fill);
sw.Begin();
sw.BeginMask();
sw.Circle(r, r, r).Fill(almostColor);
sw.End();
sw.Ellipse(r, r + r/2, r, r/2).Fill(lineColor);
sw.Ellipse(r, r - r*0.9, r, r/2).Fill(lineColor);
sw.End();
_sw.Circle(r, r, r).Fill(fill);
_sw.Begin();
_sw.BeginMask();
_sw.Circle(r, r, r).Fill(almostColor);
_sw.End();
_sw.Ellipse(r, r + r/2, r, r/2).Fill(lineColor);
_sw.Ellipse(r, r - r*0.9, r, r/2).Fill(lineColor);
_sw.End();
}
}
imgMark = ib;
imgMark = _ib;
}
}
img = ib;
@ -1699,18 +1706,18 @@ bool Knob::Key(dword key, int repcnt) {
return Ctrl::Key(key, repcnt);
}
double Knob::SliderToClient(Point pos) {
double Knob::SliderToClient(Point _pos) {
double r = min(GetSize().cx/2., GetSize().cy/2.);
double rx = r-pos.x;
double ry = r-pos.y;
double rx = r-_pos.x;
double ry = r-_pos.y;
if (rx*rx + ry*ry > r*r)
return Null;
double angle = atan(fabs(ry/rx))*180/M_PI;
if (pos.x > r) {
if (pos.y > r)
if (_pos.x > r) {
if (_pos.y > r)
angle = 360 - angle;
} else {
if (pos.y > r)
if (_pos.y > r)
angle += 180;
else
angle = 180 - angle;
@ -1718,11 +1725,11 @@ double Knob::SliderToClient(Point pos) {
return angle;
}
void Knob::LeftDown(Point pos, dword keyflags) {
void Knob::LeftDown(Point _pos, dword ) {
if(!IsEditable())
return;
SetWantFocus();
angleClick = SliderToClient(pos);
angleClick = SliderToClient(_pos);
if (IsNull(angleClick))
return;
SetCapture();
@ -1734,7 +1741,7 @@ void Knob::LeftRepeat(Point p, dword f) {
LeftDown(p, f);
}
void Knob::LeftUp(Point pos, dword keyflags) {
void Knob::LeftUp(Point , dword ) {
if (HasCapture()) {
if (interlocking)
value = minorstep*fround((value-minv)/minorstep);
@ -1743,10 +1750,10 @@ void Knob::LeftUp(Point pos, dword keyflags) {
Refresh();
}
void Knob::MouseMove(Point pos, dword keyflags) {
void Knob::MouseMove(Point _pos, dword ) {
if(!HasCapture())
return;
double angle = SliderToClient(pos);
double angle = SliderToClient(_pos);
if (IsNull(angle)) {
angleClick = Null;
return;
@ -1815,11 +1822,11 @@ void Knob::LostFocus() {
}
void FileBrowser::AddFolder(String folder, String &myFolders, TreeCtrl &folders, int id) {
if (!folder.IsEmpty() && DirectoryExists(folder))
if (myFolders.Find(folder + ";") < 0) {
folders.Add(id, NativePathIconX(folder, true, flags), folder, GetFileName(folder), true);
myFolders << folder << ";";
void FileBrowser::AddFolder(String _folder, String &myFolders, int id) {
if (!_folder.IsEmpty() && DirectoryExists(_folder))
if (myFolders.Find(_folder + ";") < 0) {
folders.Add(id, NativePathIconX(_folder, true, flags), _folder, GetFileName(_folder), true);
myFolders << _folder << ";";
}
}
@ -1834,14 +1841,14 @@ struct DisplayNameIcon : public Display {
sz.cy = max(sz.cy, 16);
return sz;
}
virtual void Paint(Draw& w, const Rect& r, const Value& q, Color ink, Color paper, dword style) const {
virtual void Paint(Draw& w, const Rect& r, const Value& q, Color ink, Color paper, dword ) const {
ValueArray va = q;
String fileName = GetFileName(String(va[0]));
Image icon = va[1];
w.DrawRect(r, paper);
w.DrawImage(r.left, r.top + (r.Height() - 16) / 2, IsNull(icon) ? Null : icon);
w.DrawText(r.left + 20, r.top + (r.Height() - Draw::GetStdFontCy()) / 2, fileName, fnt, ink);
if (GetTextSize(fileName, fnt).cx + 5 > (r.GetWidth() - (int)(0.8*EditString::GetStdHeight()))) {
if (GetTextSize(fileName, fnt).cx + 5 > (r.GetWidth() - static_cast<int>(0.8*EditString::GetStdHeight()))) {
Image rightIcon = CtrlImg::right_arrow();
w.DrawRect(r.right - 6, r.top, r.right, r.bottom, paper);
w.DrawImage(r.right - 10, r.top + rightIcon.GetHeight()/2, rightIcon);
@ -1914,13 +1921,13 @@ FileBrowser::FileBrowser() {
String myFolders = desktopFolder + ";";
AddFolder(GetPersonalFolder(), myFolders, folders, id);
AddFolder(GetMusicFolder(), myFolders, folders, id);
AddFolder(GetPicturesFolder(), myFolders, folders, id);
AddFolder(GetVideoFolder(), myFolders, folders, id);
AddFolder(GetDownloadFolder(), myFolders, folders, id);
AddFolder(GetAppDataFolder(), myFolders, folders, id);
AddFolder(GetTemplatesFolder(), myFolders, folders, id);
AddFolder(GetPersonalFolder(), myFolders, id);
AddFolder(GetMusicFolder(), myFolders, id);
AddFolder(GetPicturesFolder(), myFolders, id);
AddFolder(GetVideoFolder(), myFolders, id);
AddFolder(GetDownloadFolder(), myFolders, id);
AddFolder(GetAppDataFolder(), myFolders, id);
AddFolder(GetTemplatesFolder(), myFolders, id);
for (int i = 0; i < ds.GetCount(); ++i)
folders.Add(0, NativePathIconX(ds[i], true, flags), ds[i], ds[i], true);
@ -1939,7 +1946,7 @@ FileBrowser::FileBrowser() {
files.BackPaintHint();
files.AddIndex();
files.VertGrid(false).HorzGrid(false);
files.SetLineCy((int)(0.85*EditString::GetStdHeight()));
files.SetLineCy(static_cast<int>(0.85*EditString::GetStdHeight()));
files.HeaderTab(0).SetRatio(10);
files.ColumnWidths("200 60 120");
files.EvenRowColor(Blend(SColorMark, SColorPaper, 240));
@ -2043,7 +2050,7 @@ void FileBrowser::FilesList(String folderName, bool &thereIsAFolder) {
}
}
bool HasSubfolders(String folder, int flags) {
bool HasSubfolders(String folder, int ) {
FindFile ff(AppendFileName(folder, "*.*"));
while(ff) {
if (DirectoryExistsX(AppendFileName(folder, ff.GetName())))

View file

@ -83,7 +83,7 @@ public:
void DoGo(bool add = true);
Callback WhenChange;
Function<bool ()> WhenChange;
virtual void Serialize(Stream& s) {
WithDropChoice::Serialize(s);
@ -208,8 +208,8 @@ public:
Image &Get() {return origImage;}
void SetData(const Value& data) {Set(data.ToString());}
void operator=(String fileName) {Set(fileName);}
void operator=(Image image) {Set(image);}
void operator=(String _fileName) {Set(_fileName);}
void operator=(Image _image) {Set(_image);}
StaticImage& SetAngle(int _angle);
StaticImage& SetFit(int _fit) {fit = _fit; Refresh(); return *this;}
@ -245,7 +245,7 @@ protected:
public:
bool Add(String fileName);
bool Add(Image image);
Image &Get(int id) {return images[id];}
Image &Get(int _id) {return images[_id];}
Vector<Image> &GetImages() {return images;}
void SetActive(int _id) {id = _id; Refresh();}
StaticImageSet& SetBackground(Color c) {background = c; Refresh(); return *this;}
@ -328,8 +328,8 @@ class StaticLine : public Ctrl, public CtrlFrame {
typedef StaticLine CLASSNAME;
public:
virtual void FrameAddSize(Size& sz) {}
virtual void FrameLayout(Rect& r) {}
virtual void FrameAddSize(Size& ) {}
virtual void FrameLayout(Rect& ) {}
virtual void FramePaint(Draw& w, const Rect& r);
virtual int OverPaint() const { return 20; }
@ -353,8 +353,8 @@ public:
class StaticArrow : public Ctrl, public CtrlFrame {
typedef StaticArrow CLASSNAME;
public:
virtual void FrameAddSize(Size& sz) {}
virtual void FrameLayout(Rect& r) {}
virtual void FrameAddSize(Size& ) {}
virtual void FrameLayout(Rect& ) {}
virtual void FramePaint(Draw& w, const Rect& r);
virtual int OverPaint() const { return 20; }
@ -690,7 +690,7 @@ private:
void FileNameWhenChanged();
void AddFolder(String folder, String &myFolders, TreeCtrl &folders, int id);
void AddFolder(String folder, String &myFolders, int id);
public:
FileBrowser();
@ -737,8 +737,8 @@ public:
private:
String hyperlink;
virtual Image CursorImage(Point p, dword keyflags) {return Image::Hand();}
virtual void LeftDown(Point p, dword keyflags) {LaunchWebBrowser(hyperlink);}
virtual Image CursorImage(Point , dword ) {return Image::Hand();}
virtual void LeftDown(Point , dword ) {LaunchWebBrowser(hyperlink);}
};
class BarDisplay : public Display {

View file

@ -103,8 +103,8 @@ String GetValueStringXml(String str, const char* var) {
}
Color HtmlToColor(const char *str) {
int col;
sscanf(str+1, "%x", (unsigned int *)&col);
unsigned col;
sscanf(str+1, "%x", &col);
return Color(col >> 16, (col >> 8) & 255, col & 255);
}
@ -405,7 +405,7 @@ void SvgGet_G(GraphElemList &elems, XmlParser &xp, const char *svgFolder) {
elem.SetLimits();
}
void ParseG(GraphElemList &elems, XmlParser &xp, Svg2DTransform transf, SvgStyle style, const char *svgFolder) {
void ParseG(GraphElemList &elems, XmlParser &xp, Svg2DTransform , SvgStyle , const char *svgFolder) {
if(xp.TagE("rect"))
SvgGet_Rect(elems, xp);
else if(xp.TagE("ellipse"))
@ -962,7 +962,7 @@ void PainterCanvas::SaveToFile(String fileName) {
Exclamation(Format(t_("File format \"%s\" not found"), ext));
}
Image PainterCanvas::CursorImage(Point p, dword keyflags) {
Image PainterCanvas::CursorImage(Point , dword ) {
return cursorImage;
}

View file

@ -129,7 +129,7 @@ public:
if (y < top)
top = y;
}
void Cubic(const Pointf& p1, const Pointf& p2, const Pointf& p, bool rel) {
void Cubic(const Pointf& /*p1*/, const Pointf& p2, const Pointf& p, bool /*rel*/) {
/*DoMove0();
CubicData& m = PathAdd<CubicData>(CUBIC);
m.p1 = PathPoint(p1, rel);
@ -146,7 +146,7 @@ public:
GraphElem() {}
GraphElem(const GraphElem &graph);
virtual void Paint(Painter &sw, Svg2DTransform transf, SvgStyle style, bool firstLayer) {};
virtual void Paint(Painter &, Svg2DTransform , SvgStyle , bool ) {};
virtual void SetLimits() {};
virtual void PaintLimits(Painter &sw) {
if (limits == GraphElemLimits())
@ -185,7 +185,7 @@ public:
limits.right = x2;
limits.bottom = y2;
}
LineElem(double x1, double y1, double x2, double y2) : x1(x1), y1(y1), x2(x2), y2(y2) {SetLimits();}
LineElem(double _x1, double _y1, double _x2, double _y2) : x1(_x1), y1(_y1), x2(_x2), y2(_y2) {SetLimits();}
LineElem() {x1 = x2 = y1 = y2 = 0;}
virtual ~LineElem() {};
@ -211,7 +211,7 @@ public:
limits.right = x + width;
limits.bottom = y + height;
}
RectElem(double x, double y, double width, double height) : x(x), y(y), width(width), height(height) {SetLimits();}
RectElem(double _x, double _y, double _width, double _height) : x(_x), y(_y), width(_width), height(_height) {SetLimits();}
RectElem(const Rect &rect) : x(rect.left), y(rect.top), width(rect.right - rect.left), height(rect.bottom - rect.top) {SetLimits();}
RectElem() {x = y = width = height = 0;}
virtual ~RectElem() {};
@ -238,7 +238,7 @@ public:
limits.right = x + width;
limits.bottom = y + height;
}
EllipseElem(double x, double y, double width, double height) : x(x), y(y), width(width), height(height) {SetLimits();}
EllipseElem(double _x, double _y, double _width, double _height) : x(_x), y(_y), width(_width), height(_height) {SetLimits();}
EllipseElem() {x = y = width = height = 0;}
virtual ~EllipseElem() {};
@ -266,8 +266,8 @@ public:
limits.right = x + width;
limits.bottom = y + height;
}
ImageElem(double x, double y, double width, double height, String fileName) : x(x), y(y),
width(width), height(height), fileName(fileName) {img = Null; SetLimits();}
ImageElem(double _x, double _y, double _width, double _height, String _fileName) :
x(_x), y(_y), width(_width), height(_height), fileName(_fileName) {img = Null; SetLimits();}
ImageElem() {x = y = width = height = 0; img = Null;}
virtual ~ImageElem() {};
@ -329,7 +329,7 @@ public:
limits.right += fi[wtext[i]];
limits.bottom = limits.top + f.GetHeight();
}
TextElem(double x, double y, String text, Font f) : x(x), y(y), text(text), f(f) {factor = 1; SetLimits();}
TextElem(double _x, double _y, String _text, Font _f) : x(_x), y(_y), text(_text), f(_f) {factor = 1; SetLimits();}
TextElem() {
factor = 1;
f.Face(Font::ARIAL);
@ -387,6 +387,7 @@ public:
t = ReadPoint(p);
//Move(t, rel);
limits.UpdateLimits(t);
break;
case 'L':
while(p.IsDouble()) {
t = ReadPoint(p);

View file

@ -21,12 +21,12 @@ public:
virtual StarIndicator& AlwaysShowValue(bool b) { m_bAlwaysShowValue=b; return *this; }
virtual void MouseEnter(Point p, dword keyflags);
virtual void MouseLeave();
virtual void MouseMove(Point p, dword keyflags) { Refresh(); }
virtual void MouseMove(Point , dword ) { Refresh(); }
virtual void Paint(Draw& draw);
virtual void Layout();
virtual StarIndicator& SetFontColor(Color c) { m_FontColor=c; return *this; }
virtual void Set(double n);
virtual void Set(int n) { return Set((double)n); }
virtual void Set(int n) { return Set(static_cast<double>(n)); }
virtual void Set(int n, int tot) { return ProgressIndicator::Set(n, tot); }
virtual StarIndicator& SetVotes(int n);
virtual StarIndicator& SetVotesHigh(int n) { m_nVotesHigh=n; return *this; }

View file

@ -180,10 +180,11 @@ Width]([@(0.0.255) int]_[*@3 w])&]
[s2; Set the width of the drop down list to [%-*@3 w] .&]
[s3; &]
[s4;%- &]
[s5;:WhenChange:%- [_^Callback^ Callback]_[* WhenChange]&]
[s5;:WhenChange:%- [_^Callback^ Function<bool ()>]_[* WhenChange]&]
[s2; Function to be called when path has been selected with FileSel
window, right button is pressed or ENTER key is entered with
cursor into field.&]
[s2; If WhenChange returns false, the path is not added to drop list.&]
[s3;%- &]
[s4;%- &]
[s5;:Serialize`(Upp`:`:Stream`&`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* Serialize]([_^Upp`:`:Stream^ S

View file

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