diff --git a/bazaar/Functions4U/plugin/Credits.txt b/bazaar/Functions4U/Bsdiff/Credits.txt similarity index 100% rename from bazaar/Functions4U/plugin/Credits.txt rename to bazaar/Functions4U/Bsdiff/Credits.txt diff --git a/bazaar/Functions4U/plugin/bsadditional.cpp b/bazaar/Functions4U/Bsdiff/bsadditional.cpp similarity index 78% rename from bazaar/Functions4U/plugin/bsadditional.cpp rename to bazaar/Functions4U/Bsdiff/bsadditional.cpp index 0975b2cd2..503bd0021 100644 --- a/bazaar/Functions4U/plugin/bsadditional.cpp +++ b/bazaar/Functions4U/Bsdiff/bsadditional.cpp @@ -1,6 +1,6 @@ #include -#include "../bsdiffwrapper.h" +#include "../bsdiff.h" NAMESPACE_UPP diff --git a/bazaar/Functions4U/plugin/bsdiff.cpp b/bazaar/Functions4U/Bsdiff/bsdiff.cpp similarity index 96% rename from bazaar/Functions4U/plugin/bsdiff.cpp rename to bazaar/Functions4U/Bsdiff/bsdiff.cpp index d3ac5c60e..3da8016b3 100644 --- a/bazaar/Functions4U/plugin/bsdiff.cpp +++ b/bazaar/Functions4U/Bsdiff/bsdiff.cpp @@ -33,7 +33,7 @@ __FBSDID("$FreeBSD: src/usr.bin/bsdiff/bsdiff/bsdiff.c,v 1.1 2005/08/06 01:59:05 #include "bzlib.h" #include -#include "../bsdiffwrapper.h" +#include "../bsdiff.h" NAMESPACE_UPP diff --git a/bazaar/Functions4U/plugin/bspatch.cpp b/bazaar/Functions4U/Bsdiff/bspatch.cpp similarity index 96% rename from bazaar/Functions4U/plugin/bspatch.cpp rename to bazaar/Functions4U/Bsdiff/bspatch.cpp index 357afde61..eda5556d9 100644 --- a/bazaar/Functions4U/plugin/bspatch.cpp +++ b/bazaar/Functions4U/Bsdiff/bspatch.cpp @@ -33,7 +33,7 @@ __FBSDID("$FreeBSD: src/usr.bin/bsdiff/bspatch/bspatch.c,v 1.1 2005/08/06 01:59: #include "bzlib.h" #include -#include "../bsdiffwrapper.h" +#include "../bsdiff.h" NAMESPACE_UPP diff --git a/bazaar/Functions4U/plugin/bzlib.h b/bazaar/Functions4U/Bsdiff/bzlib.h similarity index 100% rename from bazaar/Functions4U/plugin/bzlib.h rename to bazaar/Functions4U/Bsdiff/bzlib.h diff --git a/bazaar/Functions4U/Functions4U.cpp b/bazaar/Functions4U/Functions4U.cpp index cbe093fbe..23c0719c6 100644 --- a/bazaar/Functions4U/Functions4U.cpp +++ b/bazaar/Functions4U/Functions4U.cpp @@ -1,2134 +1,2268 @@ -#include - -#include "Functions4U.h" - -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) -#define Ptr Ptr_ -#define byte byte_ -#define CY win32_CY_ - -#include -#include -#include - -#undef Ptr -#undef byte -#undef CY -#endif - -NAMESPACE_UPP - -/* -Hi Koldo, - -I checked the functions in Functions4U. Here are some notes about trashing: - - * On older systems, the trash folder was $HOME/.Trash - * Your implementation of disregards the folder $HOME/.local/share/trash/info. You should create - there a .trashinfo file when moving something in trash and delete it when deleting corresponding file permanently. - * If you delete something on different partition than $HOME, you should also check if .Trash-XXXX - exists in root of that partition (XXXX is id of user who deleted the files in it). - -.local/share/Trash/files -.local/share/Trash/info - -Un fichero por cada vez que se borra con - -KK.trashinfo -[Trash Info] -Path=/home/pubuntu/KK -DeletionDate=2010-05-19T18:00:52 - - - -You might also be interested in following: - - * Official trash specification from freedesktop.org - * Project implementing command line access to trash (unfortunately in python) according to the specification mentioned above - - -Hope this might help Smile It definitely learned me a lot of new things Very Happy - -Best regards, -Honza -*/ - -///////////////////////////////////////////////////////////////////// -// LaunchFile - -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) -bool LaunchFileCreateProcess(const char *file) { - STARTUPINFOW startInfo; - PROCESS_INFORMATION procInfo; - - ZeroMemory(&startInfo, sizeof(startInfo)); - startInfo.cb = sizeof(startInfo); - ZeroMemory(&procInfo, sizeof(procInfo)); - - WString wexec; - wexec = Format("\"%s\" \"%s\"", GetExtExecutable(GetFileExt(file)), file).ToWString(); - WStringBuffer wsbexec(wexec); - - if(!CreateProcessW(NULL, wsbexec, NULL, NULL, FALSE, 0, NULL, NULL, &startInfo, &procInfo)) - return false; - - WaitForSingleObject(procInfo.hProcess, 0); - - CloseHandle(procInfo.hProcess); - CloseHandle(procInfo.hThread); - return true; -} - -bool LaunchFileShellExecute(const char *file) { - return 32 < int(ShellExecuteW(NULL, L"open", ToSystemCharsetW(file), NULL, L".", SW_SHOWNORMAL)); -} - -bool LaunchFile(const char *_file) { - String file = WinPath(_file); - if (!LaunchFileShellExecute(file)) // First try - return LaunchFileCreateProcess(file); // Second try - return true; -} -#endif -#ifdef PLATFORM_POSIX - -String GetDesktopManagerNew() { - if(GetEnv("GNOME_DESKTOP_SESSION_ID").GetCount() || GetEnv("GNOME_KEYRING_SOCKET").GetCount()) - return "gnome"; - else if(GetEnv("KDE_FULL_SESSION").GetCount() || GetEnv("KDEDIR").GetCount() || GetEnv("KDE_MULTIHEAD").GetCount()) - return "kde"; - else { - StringParse desktopStr; - if (Sys("xprop -root _DT_SAVE_MODE").Find("xfce") >= 0) - return "xfce"; - else if ((desktopStr = Sys("xprop -root")).Find("ENLIGHTENMENT") >= 0) - return "enlightenment"; - else - return GetEnv("DESKTOP_SESSION"); - } -} - -bool LaunchFile(const char *_file) { - String file = UnixPath(_file); - int ret; - if (GetDesktopManagerNew() == "gnome") - ret = system("gnome-open \"" + String(file) + "\""); - else if (GetDesktopManagerNew() == "kde") - ret = system("kfmclient exec \"" + String(file) + "\" &"); - else if (GetDesktopManagerNew() == "enlightenment") { - String mime = GetExtExecutable(GetFileExt(file)); - String program = mime.Left(mime.Find(".")); // Left side of mime executable is the program to run - ret = system(program + " \"" + String(file) + "\" &"); - } else - ret = system("xdg-open \"" + String(file) + "\""); - return (ret >= 0); -} -#endif - -///////////////////////////////////////////////////////////////////// -// General utilities - -bool FileCat(const char *file, const char *appendFile) { - if (!FileExists(file)) - return FileCopy(appendFile, file); - FileAppend f(file); - if(!f.IsOpen()) - return false; - FileIn fi(appendFile); - if(!fi.IsOpen()) - return false; - CopyStream(f, fi, fi.GetLeft()); - fi.Close(); - f.Close(); - if(f.IsError()) - return false; - return true; -} - -bool FileStrAppend(const char *file, const char *str) { - FileAppend f(file); - if(!f.IsOpen()) - return false; - f << str; - f.Close(); - if(f.IsError()) - return false; - return true; -} - -bool AppendFile(const char *file, const char *str) {return FileStrAppend(file, str);}; - -String AppendFileName(const String& path1, const char *path2, const char *path3) { - String result = path1; - if(result.GetLength() && *result.Last() != DIR_SEP && *path2 != DIR_SEP) - result += DIR_SEP; - result += path2; - if(result.GetLength() && *result.Last() != DIR_SEP && *path3 != DIR_SEP) - result += DIR_SEP; - result += path3; - return result; -} - -String FormatLong(long a) { - return Sprintf("%ld", a); -} - -String Replace(String str, String find, String replace) { - String ret; - - int lenStr = str.GetCount(); - int lenFind = find.GetCount(); - int i = 0, j; - while ((j = str.Find(find, i)) >= i) { - ret += str.Mid(i, j-i) + replace; - i = j + lenFind; - if (i >= lenStr) - break; - } - ret += str.Mid(i); - return ret; -} - -String Replace(String str, char find, char replace) { - StringBuffer ret(str); - for (int i = 0; i < ret.GetCount(); ++i) { - if (ret[i] == find) - ret[i] = replace; - } - return ret; -} - -bool FileMoveX(const char *oldpath, const char *newpath, int flags) { - bool usr, grp, oth; - if (flags & DELETE_READ_ONLY) { - if (IsReadOnly(oldpath, usr, grp, oth)) - SetReadOnly(oldpath, false, false, false); - } - bool ret = FileMove(oldpath, newpath); - if (flags & DELETE_READ_ONLY) - SetReadOnly(newpath, usr, grp, oth); - return ret; -} - -bool FileDeleteX(const char *path, int flags) { - if (flags & USE_TRASH_BIN) - return FileToTrashBin(path); - else { - if (flags & DELETE_READ_ONLY) - SetReadOnly(path, false, false, false); - return FileDelete(path); - } -} - -bool DirectoryExistsX(const char *path, int flags) { - if (!(flags & BROWSE_LINKS)) - return DirectoryExists(path); - if (DirectoryExists(path)) - return true; - if (!IsSymLink(path)) - return false; - String filePath; - filePath = GetSymLinkPath(path); - if (filePath.IsEmpty()) - return false; - return DirectoryExists(filePath); -} - -bool ReadOnly(const char *path, bool readOnly) { - return SetReadOnly(path, readOnly); -} - -bool ReadOnly(const char *path, bool usr, bool grp, bool oth) { - return SetReadOnly(path, usr, grp, oth); -} - -bool SetReadOnly(const char *path, bool readOnly) { - return SetReadOnly(path, readOnly, readOnly, readOnly); -} - -bool SetReadOnly(const char *path, bool usr, bool grp, bool oth) { -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) - DWORD attr = GetFileAttributesW(ToSystemCharsetW(path)); - - if (attr == INVALID_FILE_ATTRIBUTES) - return false; - - DWORD newattr; - if (usr) - newattr = attr | FILE_ATTRIBUTE_READONLY; - else - newattr = attr & ~FILE_ATTRIBUTE_READONLY; - - if (attr != newattr) - return SetFileAttributesW(ToSystemCharsetW(path), newattr); - else - return true; -#else - struct stat buffer; - int status; - - if(0 != stat(ToSystemCharset(path), &buffer)) - return false; - - mode_t newmode = (usr & S_IRUSR) | (grp & S_IRGRP) | (oth & S_IROTH); - - if (newmode != buffer.st_mode) - return 0 == chmod(ToSystemCharset(path), newmode); - else - return true; -#endif -} - -bool IsReadOnly(const char *path, bool &usr, bool &grp, bool &oth) { -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) - DWORD attr = GetFileAttributesW(ToSystemCharsetW(path)); - - if (attr == INVALID_FILE_ATTRIBUTES) - return false; - - usr = grp = oth = attr & FILE_ATTRIBUTE_READONLY; - return true; -#else - struct stat buffer; - - if(0 != stat(ToSystemCharset(path), &buffer)) - return false; - - usr = buffer.st_mode & S_IRUSR; - grp = buffer.st_mode & S_IRGRP; - oth = buffer.st_mode & S_IROTH; - - return true; -#endif -} - -#ifdef PLATFORM_POSIX - -int GetUid() { - String proc = LoadFile_Safe("/etc/passwd"); - int pos = proc.Find(GetUserName()); - if (pos < 0) - return -1; - pos = proc.Find(':', pos); - if (pos < 0) - return -1; - pos = proc.Find(':', pos+1); - if (pos < 0) - return -1; - int posend = proc.Find(':', pos+1); - if (posend < 0) - return -1; - return ScanInt(proc.Mid(pos+1, posend-pos-1)); -} - -String GetMountDirectory(const String &path) { - Array drives = GetDriveList(); - for (int i = 0; i < drives.GetCount(); ++i) { - if (path.Find(drives[i]) == 0) - return drives[i]; - } - String localPath = AppendFileName(GetCurrentDirectory(), path); - if (!FileExists(localPath) && !DirectoryExists(localPath)) - return ""; - for (int i = 0; i < drives.GetCount(); ++i) { - if (localPath.Find(drives[i]) == 0) - return drives[i]; - } - return ""; -} - -String GetTrashBinDirectory() -{ - String ret = GetEnv("XDG_DATA_HOME"); - if (ret.IsEmpty()) - ret = AppendFileName(GetHomeDirectory(), ".local/share/Trash"); - else - ret = AppendFileName(ret, "Trash"); - return ret; -} - -bool FileToTrashBin(const char *path) -{ - String newPath = AppendFileName(GetTrashBinDirectory(), GetFileName(path)); - return FileMove(path, newPath); -} - -int64 TrashBinGetCount() -{ - int64 ret = 0; - FindFile ff; - if(ff.Search(AppendFileName(GetTrashBinDirectory(), "*"))) { - do { - String name = ff.GetName(); - if (name != "." && name != "..") - ret++; - } while(ff.Next()); - } - return ret; -} - -bool TrashBinClear() -{ - FindFile ff; - String trashBinDirectory = GetTrashBinDirectory(); - if(ff.Search(AppendFileName(trashBinDirectory, "*"))) { - do { - String name = ff.GetName(); - if (name != "." && name != "..") { - String path = AppendFileName(trashBinDirectory, name); - if (ff.IsFile()) - FileDelete(path); - else if (ff.IsDirectory()) - DeleteFolderDeep(path); - } - } while(ff.Next()); - } - return true; -} - -#endif -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) - -bool FileToTrashBin(const char *path) -{ - if (!FileExists(path) && !DirectoryExists(path)) - return false; - - WString ws(path); - ws.Cat() << L'\0'; // This string must be double-null terminated. - - SHFILEOPSTRUCTW fileOp; - - fileOp.hwnd = NULL; - fileOp.wFunc = FO_DELETE; - fileOp.pFrom = ~ws; - fileOp.pTo = NULL; - fileOp.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION | FOF_SILENT; - - int ret = SHFileOperationW(&fileOp); - if (0 != ret) - return false; - return true; -} - -int64 TrashBinGetCount() -{ - SHQUERYRBINFO shqbi; - - shqbi.cbSize = sizeof(SHQUERYRBINFO); - if (S_OK != SHQueryRecycleBin(0, &shqbi)) - return -1; - return shqbi.i64NumItems; -} - -bool TrashBinClear() -{ - if (S_OK != SHEmptyRecycleBin(0, 0, SHERB_NOCONFIRMATION | SHERB_NOPROGRESSUI | SHERB_NOSOUND)) - return false; - return true; -} - -#endif - -#include -#include -#include - -// This system files are like pipes: it is not possible to get the length to size the buffer -String LoadFile_Safe(String fileName) -{ -#ifdef PLATFORM_POSIX - int fid = open(fileName, O_RDONLY); -#else - int fid = _wopen(fileName.ToWString(), O_RDONLY|O_BINARY); -#endif - if (fid < 0) - return String(""); - const int size = 1024; - int nsize; - StringBuffer s; - char buf[size]; - while((nsize = read(fid, buf, size)) == size) - s.Cat(buf, size); - if (nsize > 1) - s.Cat(buf, nsize-1); - close(fid); - return s; -} - -String GetExtExecutable(String ext) -{ - String exeFile = ""; - if (ext[0] != '.') - ext = String(".") + ext; -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) - String file = AppendFileName(GetHomeDirectory(), String("dummy") + ext); // Required by FindExecutableW - SaveFile(file, " "); - if (!FileExists(file)) - return ""; - HINSTANCE ret; - WString fileW(file); - WCHAR exe[1024]; - ret = FindExecutableW(fileW, NULL, exe); - if ((long)ret > 32) - exeFile = WString(exe).ToString(); - DeleteFile(file); -#endif -#ifdef PLATFORM_POSIX - StringParse mime; - //if (LaunchCommand(String("xdg-mime query filetype ") + file, mime) >= 0) // xdg-mime query filetype does not work properly in Enlightenment - mime = LoadFile_Safe("/etc/mime.types"); // Search in /etc/mime.types the mime type for the extension - if ((mime.GoAfter_Init(String(" ") + ext.Right(ext.GetCount()-1))) || (mime.GoAfter_Init(String("\t") + ext.Right(ext.GetCount()-1)))) { - mime.GoBeginLine(); - mime = mime.GetText(); - exeFile = TrimRight(Sys(String("xdg-mime query default ") + mime)); - } -#endif - return exeFile; -} - -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) -Array GetDriveList() { - char drvStr[26*4+1]; // A, B, C, ... - Array ret; - - int lenDrvStrs = ::GetLogicalDriveStrings(sizeof(drvStr), drvStr); - // To get the error call GetLastError() - if (lenDrvStrs == 0) - return ret; - - ret.Add(drvStr); - for (int i = 0; i < lenDrvStrs-1; ++i) { - if (drvStr[i] == '\0') - ret.Add(drvStr + i + 1); - } - return ret; -} -#endif -#if defined(PLATFORM_POSIX) -Array GetDriveList() { - Array ret; - // Search for mountable file systems - String mountableFS = "cofs."; - StringParse sfileSystems(LoadFile_Safe("/proc/filesystems")); - String str; - while (true) { - str = sfileSystems.GetText(); - if (str == "") - break; - else if (str != "nodev") - mountableFS << str << "."; - else - str = sfileSystems.GetText(); - } - // Get mounted drives - StringParse smounts(LoadFile_Safe("/proc/mounts")); - StringParse smountLine(Trim(smounts.GetText("\r\n"))); - do { - String devPath = smountLine.GetText(); - String mountPath = smountLine.GetText(); - String fs = smountLine.GetText(); - if ((mountableFS.Find(fs) >= 0) && (mountPath.Find("/dev") < 0) - && (mountPath.Find("/rofs") < 0) && (mountPath != "/")) // Is mountable - ret.Add(mountPath); - smountLine = Trim(smounts.GetText("\r\n")); - } while (smountLine != ""); - ret.Add("/"); // Last but not least - return ret; -} -#endif -/* Replaced by GetCurrentDirectory() and SetCurrentDirectory() -String Getcwd() { -#if defined(PLATFORM_WIN32) || defined(PLATFORM_WIN64) - wchar ret[MAX_PATH]; - if (_wgetcwd(ret, MAX_PATH)) - return FromSystemCharsetW(ret); -#else -#define MAX_PATH 1024 - char ret[MAX_PATH]; - if (getcwd(ret, MAX_PATH)) - return String(ret); -#endif - return Null; -} - -bool Chdir (const String &folder) { -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) - return 0 == _wchdir(ToSystemCharsetW(folder)); -#else - return 0 == chdir(folder); -#endif -} -*/ -/* -String Format(Time time, const char *fmt) { - String s; - if(IsNull(time)) - return String(); - - return Format(Date(time)) + Format(fmt, time.hour, time.minute, time.second); -} - -String GetFirefoxDownloadFolder() -{ - String profilesPath = "mozilla/firefox"; -#ifdef PLATFORM_POSIX // Is hidden - profilesPath = String(".") + profilesPath; -#endif - StringParse profiles = LoadFile(AppendFileName(GetAppDataFolder(), AppendFileName(profilesPath, "profiles.ini"))); - if (!profiles.GoAfter("Path")) return ""; - if (!profiles.GoAfter("=")) return ""; - String path = profiles.GetText(); - String pathPrefs = AppendFileName(AppendFileName(AppendFileName(GetAppDataFolder(), profilesPath), path), "prefs.js"); - StringParse prefs = LoadFile(pathPrefs); - if (!prefs.GoAfter("\"browser.download.dir\"")) { - if (!prefs.GoAfter("\"browser.download.lastDir\"")) - return ""; - } - if (!prefs.GoAfter(",")) return ""; - return prefs.GetText(); -} -*/ - -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) -String GetShellFolder2(int clsid) -{ - wchar path[MAX_PATH]; - if(SHGetFolderPathW(NULL, clsid, NULL, //SHGFP_TYPE_CURRENT - 0, path) == S_OK) - return FromUnicodeBuffer(path); - return Null; -} - -String GetShellFolder2(const char *local, const char *users) -{ - String ret = FromSystemCharset(GetWinRegString(local, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", - HKEY_CURRENT_USER)); - if (ret == "" && *users != '\0') - return FromSystemCharset(GetWinRegString(users, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", - HKEY_LOCAL_MACHINE)); - return ret; -} -/* -String GetIEDownloadFolder() -{ - String ret = FromSystemCharset(GetWinRegString("Download Directory", "Software\\Microsoft\\Internet Explorer", HKEY_CURRENT_USER)); - if (ret == "") - ret = FromSystemCharset(GetWinRegString("Save Directory", "Software\\Microsoft\\Internet Explorer\\Main", HKEY_CURRENT_USER)); - return ret; -} -String GetDesktopFolder() {return GetShellFolder("Desktop", "Common Desktop");} -String GetProgramsFolder() {return FromSystemCharset(GetWinRegString("ProgramFilesDir", "Software\\Microsoft\\Windows\\CurrentVersion", HKEY_LOCAL_MACHINE));} -String GetAppDataFolder() {return GetShellFolder("AppData", "Common AppData");} -String GetMusicFolder() {return GetShellFolder("My Music", "CommonMusic");} -String GetPicturesFolder() {return GetShellFolder("My Pictures", "CommonPictures");} -String GetVideoFolder() {return GetShellFolder("My Video", "CommonVideo");} -String GetTemplatesFolder() {return GetShellFolder("Templates", "Common Templates");} -String GetDownloadFolder() -{ - String browser = GetExtExecutable("html"); - browser = ToLower(browser); - if (browser.Find("iexplore") >= 0) - return GetIEDownloadFolder(); - else if (browser.Find("firefox") >= 0) - return GetFirefoxDownloadFolder(); - return GetDesktopFolder(); // I do not know to do it in other browsers !! -}; -*/ -String GetPersonalFolder() {return GetShellFolder2("Personal", 0);} -String GetStartupFolder() {return GetShellFolder2(CSIDL_STARTUP);} - -String GetTempFolder() -{ - String ret; - if ((ret = GetEnv("TEMP")) == "") // One or the other one - ret = GetEnv("TMP"); - return ret; -} - -String GetOsFolder() -{ - char ret[MAX_PATH]; - ::GetWindowsDirectory(ret, MAX_PATH); - return String(ret); -} -String GetSystemFolder() -{ - char ret[MAX_PATH]; - ::GetSystemDirectory(ret, MAX_PATH); - return String(ret); -} - -#endif -#ifdef PLATFORM_POSIX - -String GetPathXdg2(String xdgConfigHome, String xdgConfigDirs) -{ - String ret = ""; - if (FileExists(ret = AppendFileName(xdgConfigHome, "user-dirs.dirs"))) ; - else if (FileExists(ret = AppendFileName(xdgConfigDirs, "user-dirs.defaults"))) ; - else if (FileExists(ret = AppendFileName(xdgConfigDirs, "user-dirs.dirs"))) ; - return ret; -} -String GetPathDataXdg2(String fileConfig, const char *folder) -{ - StringParse fileData = LoadFile(fileConfig); - - if (!fileData.GoAfter(folder)) return ""; - if (!fileData.GoAfter("=")) return ""; - - String ret = ""; - StringParse path = fileData.GetText(); - if(path.GoAfter("$HOME/")) - ret = AppendFileName(GetHomeDirectory(), path.Right()); - else if (!FileExists(path)) - ret = AppendFileName(GetHomeDirectory(), path); - - return ret; -} -String GetShellFolder2(const char *local, const char *users) -{ - String xdgConfigHome = GetEnv("XDG_CONFIG_HOME"); - if (xdgConfigHome == "") // By default - xdgConfigHome = AppendFileName(GetHomeDirectory(), ".config"); - String xdgConfigDirs = GetEnv("XDG_CONFIG_DIRS"); - if (xdgConfigDirs == "") // By default - xdgConfigDirs = "/etc/xdg"; - String xdgFileConfigData = GetPathXdg2(xdgConfigHome, xdgConfigDirs); - String ret = GetPathDataXdg2(xdgFileConfigData, local); - if (ret == "" && *users != '\0') - return GetPathDataXdg2(xdgFileConfigData, users); - else - return ret; -} - -String GetTempFolder() -{ - return GetHomeDirectory(); -} -String GetOsFolder() -{ - return String("/bin"); -} -String GetSystemFolder() -{ - return String(""); -} - -String GetPersonalFolder() {return GetShellFolder2("XDG_DOCUMENTS_DIR", "DOCUMENTS");} - -#endif - -struct StringNormalCompare__ { - int operator()(char a, char b) const { return a - b; } -}; - -int Compare(const String& a, int i0, const String& b, int len) { - return IterCompare(a.Begin() + i0, a.Begin() + i0 + len, b.Begin(), b.Begin() + len, StringNormalCompare__()); -} - -int ReverseFind(const String& s, const String& toFind, int from) { - ASSERT(from >= 0 && from <= s.GetLength()); - int lc = toFind.GetLength(); - for (int i = from; i >= 0; --i) { - if (Compare(s, i, toFind, lc) == 0) - return i; - } - return -1; -} - -Time StrToTime(const char *s) { - Time ret; - if (StrToTime(ret, s)) - return ret; - else - return Null; -} - -Date StrToDate(const char *s) { - Time ret; - if (StrToDate(ret, s)) - return ret; - else - return Null; -} - -void StringToHMS(String durat, int &hour, int &min, double &seconds) { - StringParse duration(durat); - String s1, s2, s3; - s1 = duration.GetText(":"); - s2 = duration.GetText(":"); - s3 = duration.GetText(); - - if (s3 != "") { - hour = atoi(s1); - min = atoi(s2); - seconds = atof(s3); - } else if (s2 != "") { - hour = 0; - min = atoi(s1); - seconds = atof(s2); - } else { - hour = 0; - min = 0; - seconds = atof(s1); - } -} -double StringToSeconds(String duration) { - int hour, min; - double secs; - StringToHMS(duration, hour, min, secs); - return 60.*hour + 60.*min + secs; -} - -String formatSeconds(double seconds) { - String ret = FormatIntDec((int)seconds, 2, '0'); - double decs = seconds - (int)seconds; - if (decs > 0) - ret << "." << FormatIntDec((int)(decs*100), 2, '0'); - return ret; -} - -String HMSToString(int hour, int min, double seconds, bool units) { - String sunits; - if (units) { - if (hour >= 2) - sunits = t_("hours"); - else if (hour == 1) - sunits = t_("hour"); - else if (min >= 2) - sunits = t_("mins"); - else if (min == 1) - sunits = t_("min"); - else if (seconds > 1) - sunits = t_("secs"); - else - sunits = t_("sec"); - } - String ret; - if (hour > 0) - ret << hour << ":"; - if (min > 0 || hour > 0) - ret << (ret.IsEmpty() ? FormatInt(min) : FormatIntDec(min, 2, '0')) << ":"; - ret << (ret.IsEmpty() ? FormatDouble(seconds, 2, FD_REL) : formatSeconds(seconds)); - if (units) - ret << " " << sunits; - return ret; -} - -String SecondsToString(double seconds, bool units) { - int hour, min; - hour = (int)(seconds/3600.); - seconds -= hour*3600; - min = (int)(seconds/60.); - seconds -= min*60; - return HMSToString(hour, min, seconds, units); -} - -String BytesToString(uint64 _bytes, bool units) -{ - String ret; - uint64 bytes = _bytes; - - if (bytes >= 1024) { - bytes /= 1024; - if (bytes >= 1024) { - bytes /= 1024; - if (bytes >= 1024) { - bytes /= 1024; - if (bytes >= 1024) { - bytes /= 1024; - ret = Format("%.1f %s", _bytes/(1024*1024*1024*1024.), units ? "Tb" : ""); - } else - ret = Format("%.1f %s", _bytes/(1024*1024*1024.), units ? "Gb" : ""); - } else - ret = Format("%.1f %s", _bytes/(1024*1024.), units ? "Mb" : ""); - } else - ret = Format("%.1f %s", _bytes/1024., units ? "Kb" : ""); - } else - ret << _bytes << (units ? "b" : ""); - return ret; -} - -String FormatDoubleAdjust(double d, double range) { - if (fabs(d) <= 1e-15) - d = 0; - if (0.001 <= range && range < 0.01) return FormatDouble(d,5); - else if (0.01 <= range && range < 0.1) return FormatDouble(d,4); - else if (0.1 <= range && range < 1) return FormatDouble(d,3); - else if (1 <= range && range < 10) return FormatDouble(d,2); - else if (10 <= range && range < 100) return FormatDouble(d,1); - else if (100 <= range && range < 100000) return FormatDouble(d,0); - else return FormatDoubleExp(d,2); -} - -String RemoveAccent(wchar c) { - WString wsret; - - if (IsAlNum(c) || IsSpace(c)) { - wsret.Cat(c); - return wsret.ToString(); - } - //const WString accented = "ÂÃÀÁÇÈÉÊËẼÌÍÎÏÑÒÓÔÕÙÚÛÝàáâãçèéêëẽìíîïñòóôõøùúûýÿ"; - const WString accented = "\303\202\303\203\303\200\303\201\303\207\303\210\303\211\303\212\303\213\341\272\274\303\214\303\215\303\216\303\217\303\221\303\222\303\223\303\224\303\225\303\231\303\232\303\233\303\235\303\240\303\241\303\242\303\243\303\247\303\250\303\251\303\252\303\253\341\272\275\303\254\303\255\303\256\303\257\303\261\303\262\303\263\303\264\303\265\303\270\303\271\303\272\303\273\303\275\303\277"; - const char *unaccented = "AAAACEEEEEIIIINOOOOUUUYaaaaceeeeeiiiinooooouuuyy"; - - for (int i = 0; accented[i]; ++i) { - if (accented[i] == c) { - wsret.Cat(unaccented[i]); - return wsret.ToString(); - } - } - //const WString maccented = "ÅåÆæØøþÞßÐðÄäÖöÜü"; - const WString maccented = "\303\205\303\245\303\206\303\246\303\230\303\270\303\276\303\236\303\237\303\220\303\260\303\204\303\244\303\226\303\266\303\234\303\274"; - const char *unmaccented[] = {"AA", "aa", "AE", "ae", "OE", "oe", "TH", "th", "SS", "ETH", - "eth", "AE", "ae", "OE", "oe", "UE", "ue"}; - for (int i = 0; maccented[i]; ++i) { - if (maccented[i] == c) - return unmaccented[i]; - } - wsret.Cat(c); - return wsret.ToString(); -} - -bool IsPunctuation(wchar c) { - //const WString punct = "\"’'()[]{}<>:;,‒–—―….,¡!¿?«»-‐‘’“”/\\&@*\\•^©¤฿¢$€ƒ£₦¥₩₪†‡〃#№ºª\%‰‱ ¶′®§℠℗~™_|¦="; - const WString punct = "\"\342\200\231'()[]{}<>:;,\342\200\222\342\200\223\342\200\224\342\200\225\342\200\246.,\302\241!\302\277?\302\253\302\273-\342\200\220\342\200\230\342\200\231\342\200\234\342\200\235/\\&@*\\\342\200\242^\302\251\302\244\340\270\277\302\242$\342\202\254\306\222\302\243\342\202\246\302\245\342\202\251\342\202\252\342\200\240\342\200\241\343\200\203#\342\204\226\302\272\302\252%\342\200\260\342\200\261 " - "\302\266\342\200\262\302\256\302\247\342\204\240\342\204\227~\342\204\242_|\302\246="; - for (int i = 0; punct[i]; ++i) { - if (punct[i] == c) - return true; - } - return false; -} - -String RemoveAccents(String str) { - String ret; - WString wstr = str.ToWString(); - for (int i = 0; i < wstr.GetCount(); ++i) { - String schar = RemoveAccent(wstr[i]); - if (i == 0 || ((i > 0) && ((IsSpace(wstr[i-1]) || IsPunctuation(wstr[i-1]))))) { - if (schar.GetCount() > 1) { - if (IsUpper(schar[0]) && IsLower(wstr[1])) - schar = schar[0] + ToLower(schar.Mid(1)); - } - } - ret += schar; - } - return ret; -} - -String FitFileName(String fileName, int len) { - if (fileName.GetCount() <= len) - return fileName; - - Array path; - - const char *s = fileName; - char c; - int pos0 = 0; - for (int pos1 = 0; (c = s[pos1]) != '\0'; ++pos1) { - #if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) - if(c == '\\' || c == '/') { - #else - if(c == '/') { - #endif - path.Add(fileName.Mid(pos0, pos1-pos0)); - pos0 = ++pos1; - } - } - path.Add(fileName.Mid(pos0)); - - String begin, end; - int iBegin = 0; - int iEnd = path.GetCount() - 1; - - if (path[iEnd].GetCount() >= len) - return path[iEnd].Left(len); - if (path[iEnd].GetCount() >= len-4) - return path[iEnd]; - - len -= 3; // ... - - for (; iBegin <= iEnd; iBegin++, iEnd--) { - if (path[iEnd].GetCount() + 1 > len) - break; - end = DIR_SEPS + path[iEnd] + end; - len -= path[iEnd].GetCount() + 1; - if (path[iBegin].GetCount() + 1 > len) - break; - begin += path[iBegin] + DIR_SEPS; - len -= path[iBegin].GetCount() + 1; - } - return begin + "..." + end; -} - -String Tokenize(const String &str, const String &token, int &pos) { - int npos; - for (int i = 0; i < token.GetCount(); ++i) { - if ((npos = str.Find(token[i], pos)) >= 0) - break; - } - int oldpos = pos; - if (npos < 0) { - pos = str.GetCount(); - return str.Mid(oldpos); - } else { - pos = npos + 1; - return str.Mid(oldpos, npos-oldpos); - } -} - -//int DayOfYear(Date d) { -// return 1 + d - FirstDayOfYear(d); -//} - -#ifdef PLATFORM_POSIX -String FileRealName(const char *fileName) { - fileName = GetFullPath(fileName); - FindFile ff(fileName); - if (!ff) - return String(""); - else - return fileName; -} -#endif -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) -bool GetRealName_Next(String &real, String file) { - bool ret; - String old; - int from = real.GetCount()+1; - int to = file.Find(DIR_SEP, from); - if (to >= 0) { - old = file.Mid(from, to-from); - ret = true; - } else { - old = file.Mid(from); - ret = false; - } - real += DIR_SEP; - FindFile ff(real + old); - real += ff.GetName(); - return ret; -} - -String FileRealName(const char *_fileName) { - String fileName = GetFullPath(_fileName); - int len = fileName.GetCount(); - - if (len == 3) { - FindFile ff(fileName + "*"); - if (!ff) - return String(""); - else - return fileName; - } - FindFile ff(fileName); - if (!ff) - return String(""); - String ret; - - ret.Reserve(len); - - ret = ToUpper(fileName.Left(1)) + ":"; - - while (GetRealName_Next(ret, fileName)) ; - - return ret; -} -#endif - -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) - -#define Ptr Ptr_ -#define byte byte_ -#define CY win32_CY_ - -#include -#include - -#include -#include - -#undef Ptr -#undef byte -#undef CY - -#endif -/* -bool GetSymLinkPath(const char *linkPath, String &filePath) -{ -#ifdef PLATFORM_WIN32 - HRESULT hres; - IShellLink* psl; - IPersistFile* ppf; - CoInitialize(NULL); - hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, - (PVOID *) &psl); - if(SUCCEEDED(hres)) { - hres = psl->QueryInterface(IID_IPersistFile, (PVOID *) &ppf); - if(SUCCEEDED(hres)) { - hres = ppf->Load(ToSystemCharsetW(linkPath), STGM_READ); - if(SUCCEEDED(hres)) { - char fileW[_MAX_PATH] = {0}; - psl->GetPath(fileW, _MAX_PATH, NULL, 0); - filePath = FromSystemCharset(fileW); - } else - return false; - ppf->Release(); - } else - return false; - psl->Release(); - } else - return false; - CoUninitialize(); - return true; -#else - char buff[_MAX_PATH + 1]; - bool ret; - int len = readlink(linkPath, buff, _MAX_PATH); - if (ret = (len > 0 && len < _MAX_PATH)) - buff[len] = '\0'; - else - *buff = '\0'; - filePath = buff; - return ret; -#endif -} -*/ -bool IsSymLink(const char *path) { -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) - return GetFileExt(path) == ".lnk"; -#else - struct stat stf; - lstat(path, &stf); - return S_ISLNK(stf.st_mode); -#endif -} - -String GetNextFolder(const String &folder, const String &lastFolder) { - int pos = lastFolder.Find(DIR_SEP, folder.GetCount()+1); - if (pos >= 0) - return lastFolder.Left(pos); - else - return lastFolder; -} - -bool UpperFolder(const char *folderName) { - if (!folderName) - return false; - if (folderName[0] == '\0') - return false; -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) - if (strlen(folderName) == 3) -#else - if (strlen(folderName) == 1) -#endif - return false; - return true; -} - -String GetUpperFolder(const String &folderName) { - if (!UpperFolder(folderName)) - return folderName; - int len = folderName.GetCount(); - if (folderName[len-1] == DIR_SEP) - len--; - int pos = folderName.ReverseFind(DIR_SEP, len-1); -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) - if (pos == 2) -#else - if (pos == 0) -#endif - pos++; - return folderName.Left(pos); -} - -bool CreateFolderDeep(const char *dir) -{ - if (RealizePath(dir)) - return DirectoryCreate(dir); - else - return false; -/* if (DirectoryExists(dir)) - return true; - String upper = GetUpperFolder(dir); - if (CreateFolderDeep(upper)) - return DirectoryCreate(dir); - else - return false; */ -} - -bool DeleteFolderDeepWildcards(const char *path, int flags) -{ - FindFile ff(path); - String dir = GetFileDirectory(path); - while(ff) { - String name = ff.GetName(); - String p = AppendFileName(dir, name); - if(ff.IsFile()) - FileDeleteX(p, flags); - else - if(ff.IsFolder()) - DeleteFolderDeep(p); - ff.Next(); - } - return DirectoryDelete(dir); -} - -bool DirectoryCopy_Each(const char *dir, const char *newPlace, String relPath) -{ - String dirPath = AppendFileName(dir, relPath); - String newPath = AppendFileName(newPlace, relPath); - FindFile ff(AppendFileName(dirPath, "*.*")); - while(ff) { - if(ff.IsFile()) - FileCopy(AppendFileName(dirPath, ff.GetName()), AppendFileName(newPath, ff.GetName())); - else if(ff.IsFolder()) { - DirectoryCreate(AppendFileName(newPath, ff.GetName())); - if(!DirectoryCopy_Each(dir, newPlace, AppendFileName(relPath, ff.GetName()))) - return false; - } - ff.Next(); - } - return true; -} - -bool DirectoryCopyX(const char *dir, const char *newPlace) { - return DirectoryCopy_Each(dir, newPlace, ""); -} - -#if defined(__MINGW32__) - #define _SH_DENYNO 0x40 -#endif - -int FileCompare(const char *path1, const char *path2) { - int fp1; -#ifdef PLATFORM_POSIX - fp1 = open(ToSystemCharset(path1), O_RDONLY, S_IWRITE|S_IREAD); -#else - fp1 = _wsopen(ToSystemCharsetW(path1), O_RDONLY|O_BINARY, _SH_DENYNO, _S_IREAD|_S_IWRITE); -#endif - if (fp1 == -1) - return -2; - int fp2; -#ifdef PLATFORM_POSIX - fp2 = open(ToSystemCharset(path2), O_RDONLY, S_IWRITE|S_IREAD); -#else - fp2 = _wsopen(ToSystemCharsetW(path2), O_RDONLY|O_BINARY, _SH_DENYNO, _S_IREAD|_S_IWRITE); -#endif - if (fp2 == -1) { - close(fp1); - return -2; - } - Buffer c1(8192), c2(8192); - int ret = -1; - while (true) { - int n1 = read(fp1, c1, 8192); - int n2 = read(fp2, c2, 8192); - if (n1 == -1 || n2 == -1) { - ret = -2; - break; - } - if (n1 != n2) - break; - if (memcmp(c1, c2, n1) != 0) - break; - if (n1 == 0) { - ret = 1; - break; - } - } -#ifdef PLATFORM_POSIX - if (-1 == close(fp1)) - ret = -2; - if (-1 == close(fp2)) - ret = -2; -#else - if (-1 == _close(fp1)) - ret = -2; - if (-1 == _close(fp2)) - ret = -2; -#endif - return ret; -} - -int64 FindStringInFile(const char *file, const String text, int64 pos0) { -#ifdef PLATFORM_POSIX - FILE *fp = fopen(file, "rb"); -#else - FILE *fp = _wfopen(String(file).ToWString(), L"rb"); -#endif - if (fp != NULL) { - int64 pos = 0; - if (pos0 > 0) { - pos = pos0; - if (0 == fseek(fp, long(pos0), SEEK_SET)) - return -2; - } - int i = 0, c; - for (; (c = fgetc(fp)) != EOF; pos++) { - if (c == text[i]) { - ++i; - if (i == text.GetCount()) - return pos - i; - } else { - if (i != 0) - if (0 == fseek(fp, -(i-1), SEEK_CUR)) - return -2; - i = 0; - } - } - fclose(fp); - } else - return -2; - return -1; -} - -bool MatchPathName(const char *name, const Array &cond, const Array &ext) { - for (int i = 0; i < cond.GetCount(); ++i) { - if(!PatternMatch(cond[i], name)) - return false; - } - for (int i = 0; i < ext.GetCount(); ++i) { - if(PatternMatch(ext[i], name)) - return false; - } - return true; -} - -void SearchFile_Each(String dir, const Array &condFiles, const Array &condFolders, - const Array &extFiles, const Array &extFolders, - const String text, Array &files, Array &errorList) { - FindFile ff; - if (ff.Search(AppendFileName(dir, "*"))) { - do { - if(ff.IsFile()) { - String name = AppendFileName(dir, ff.GetName()); - if (MatchPathName(ff.GetName(), condFiles, extFiles)) { - if (text.IsEmpty()) - files.Add(name); - else { - switch(FindStringInFile(name, text)) { - case 1: files.Add(name); - break; - case -1:errorList.Add(AppendFileName(dir, ff.GetName()) + String(": ") + - t_("Impossible to open file")); - break; - } - } - } - } else if(ff.IsDirectory()) { - String folder = ff.GetName(); - if (folder != "." && folder != "..") { - String name = AppendFileName(dir, folder); - if (MatchPathName(name, condFolders, extFolders)) - SearchFile_Each(name, condFiles, condFolders, extFiles, extFolders, text, files, errorList); - } - } - } while (ff.Next()); - } -} - -Array SearchFile(String dir, const Array &condFiles, const Array &condFolders, - const Array &extFiles, const Array &extFolders, - const String &text, Array &errorList) { - Array files; - //errorList.Clear(); - - SearchFile_Each(dir, condFiles, condFolders, extFiles, extFolders, text, files, errorList); - - - return files; -} - -Array SearchFile(String dir, String condFile, String text, Array &errorList) -{ - Array condFiles, condFolders, extFiles, extFolders, files; - //errorList.Clear(); - - condFiles.Add(condFile); - SearchFile_Each(dir, condFiles, condFolders, extFiles, extFolders, text, files, errorList); - - return files; -} - -Array SearchFile(String dir, String condFile, String text) -{ - Array errorList; - Array condFiles, condFolders, extFiles, extFolders, files; - - condFiles.Add(condFile); - SearchFile_Each(dir, condFiles, condFolders, extFiles, extFolders, text, files, errorList); - - return files; -} - -bool fileDataSortAscending; -char fileDataSortBy; - -FileDataArray::FileDataArray(bool use, int _fileFlags) -{ - Clear(); - fileDataSortAscending = true; - fileDataSortBy = 'n'; - useId = use; - fileFlags = _fileFlags; -} - -bool FileDataArray::Init(String folder, FileDataArray &orig, FileDiffArray &diff) -{ - basePath = orig.basePath; - fileCount = orig.fileCount; - folderCount = orig.folderCount; - fileSize = orig.fileSize; - useId = orig.useId; - fileList.SetCount(orig.GetCount()); - for (int i = 0; i < orig.GetCount(); ++i) - fileList[i] = orig[i]; - - for (int i = 0; i < diff.GetCount(); ++i) { - long id; - if (diff[i].action != 'n') { - id = Find(diff[i].relPath, diff[i].fileName, diff[i].isFolder); - if (id < 0) - return false; - } - switch(diff[i].action) { - case 'u': - fileList[id].id = diff[i].idMaster; - fileList[id].length = diff[i].lengthMaster; - fileList[id].t = diff[i].tMaster; - break; - case 'n': - fileList.Add(FileData(diff[i].isFolder, diff[i].fileName, diff[i].relPath, diff[i].lengthMaster, diff[i].tMaster, diff[i].idMaster)); - if (diff[i].isFolder) - folderCount++; - else - fileCount++; - break; - case 'd': - fileList.Remove(id); - if (diff[i].isFolder) - folderCount--; - else - fileCount--; - break; - break; - case 'p': - SetLastError(t_("Problem found")); // To Fix - //return false; - } - } - return true; -} - -void FileDataArray::Clear() -{ - fileList.Clear(); - errorList.Clear(); - fileCount = folderCount = 0; - fileSize = 0; - basePath = ""; -} - -bool FileDataArray::Search(String dir, String condFile, bool recurse, String text) -{ - Clear(); - if (fileFlags & BROWSE_LINKS) { - if (IsSymLink(dir)) - dir = basePath = GetSymLinkPath(dir); - else - basePath = dir; - } else - basePath = dir; - Search_Each(dir, condFile, recurse, text); - return errorList.IsEmpty(); -} - -void FileDataArray::Search_Each(String dir, String condFile, bool recurse, String text) -{ - FindFile ff; - if (dir == "C:\\Desarrollo\\Packages\\ffmpeg_source\\tests\\ref\\vsynth2\\rgb") - int kk = 1; - if (ff.Search(AppendFileName(dir, condFile))) { - do { - if(ff.IsFile()) { - String p = AppendFileName(dir, ff.GetName()); - //if (ff.IsSymLink()) { - // p = p; - //} - /* - fileList.Add(FileData(true, ff.GetName(), GetRelativePath(dir), 0, ff.GetLastWriteTime(), 0)); - folderCount++; - if (recurse) - Search_Each(p, condFile, recurse, text); - } else */ if (text.IsEmpty()) { - uint64 len = ff.GetLength(); - fileList.Add(FileData(false, ff.GetName(), GetRelativePath(dir), len, ff.GetLastWriteTime(), - (useId && len > 0) ? GetFileId(p) : 0)); - fileCount++; - fileSize += len; - } else { - FILE *fp = fopen(p, "r"); - if (fp != NULL) { - int i = 0, c; - while ((c = fgetc(fp)) != EOF) { - if (c == text[i]) { - ++i; - if (i == text.GetCount()) { - uint64 len = ff.GetLength(); - fileList.Add(FileData(false, ff.GetName(), GetRelativePath(dir), len, ff.GetLastWriteTime(), useId ? GetFileId(p) : 0)); - fileCount++; - fileSize += len; - break; - } - } else { - if (i != 0) - fseek(fp, -(i-1), SEEK_CUR); - i = 0; - } - } - fclose(fp); - } else - errorList.Add(AppendFileName(dir, ff.GetName()) + String(": ") + t_("Impossible to open file")); - } - } - } while (ff.Next()); - } - ff.Search(AppendFileName(dir, "*")); - do { - String name = ff.GetName(); - if(ff.IsDirectory() && name != "." && name != "..") { - String p = AppendFileName(dir, name); - fileList.Add(FileData(true, name, GetRelativePath(dir), 0, ff.GetLastWriteTime(), 0)); - folderCount++; - if (recurse) - Search_Each(p, condFile, recurse, text); - } - } while (ff.Next()); -} - -int64 FileDataArray::GetFileId(String fileName) -{ - int64 id = -1; -#ifdef PLATFORM_POSIX - FILE *fp = fopen(fileName, "rb"); -#else - FILE *fp = _wfopen(fileName.ToWString(), L"rb"); -#endif - if (fp != NULL) { - int c; - long i = 0; - while ((c = fgetc(fp)) != EOF) { - id += c*i; - i++; - } - fclose(fp); - } - return id; -} - -void FileDataArray::SortByName(bool ascending) -{ - fileDataSortBy = 'n'; - fileDataSortAscending = ascending; - Sort(fileList); -} -void FileDataArray::SortByDate(bool ascending) -{ - fileDataSortBy = 'd'; - fileDataSortAscending = ascending; - Sort(fileList); -} -void FileDataArray::SortBySize(bool ascending) -{ - fileDataSortBy = 's'; - fileDataSortAscending = ascending; - Sort(fileList); -} - -bool operator<(const FileData& a, const FileData& b) -{ - if ((a.isFolder && b.isFolder) || (!a.isFolder && !b.isFolder)) { - switch (fileDataSortBy) { - case 'n': { - bool ais = IsDigit(a.fileName[0]); - bool bis = IsDigit(b.fileName[0]); - if (ais && bis) - return atoi(a.fileName) < atoi(b.fileName); - if (ais) - return true; - if (bis) - return false; - } -#ifdef PLATFORM_POSIX - return (a.fileName < b.fileName)&fileDataSortAscending; -#else - return (ToLower(a.fileName) < ToLower(b.fileName))&fileDataSortAscending; -#endif - case 'd': return (a.t < b.t)&fileDataSortAscending; - default: return (a.length < b.length)&fileDataSortAscending; - } - } else - return a.isFolder; -} - -bool CheckFileData(FileData &data, String &relFileName, String &fileName, String &lowrelFileName, String &lowfileName, bool isFolder) { - if (data.isFolder == isFolder) { - if (ToLower(data.fileName) == lowfileName) { - if (ToLower(data.relFilename) == lowrelFileName) - return true; - } - } - return false; -} - -int FileDataArray::Find(String &relFileName, String &fileName, bool isFolder) { - String lowrelFileName = ToLower(relFileName); - String lowfileName = ToLower(fileName); - for (int i = 0; i < fileList.GetCount(); ++i) { - if (CheckFileData(fileList[i], relFileName, fileName, lowrelFileName, lowfileName, isFolder)) - return i; - } - return -1; -} - -/* -int FileDataArray::Find(FileDataArray &data, int id) { - return Find(data[id].relFilename, data[id].fileName, data[id].isFolder); -} -*/ - -int FileDataArray::Find(FileDataArray &data, int id) { - String lowrelFileName = ToLower(data[id].relFilename); - String lowfileName = ToLower(data[id].fileName); - bool isFolder = data[id].isFolder; - - int num = fileList.GetCount(); - if (num == 0) - return -1; - if (num == 1) { - if (CheckFileData(fileList[0], data[id].relFilename, data[id].fileName, lowrelFileName, lowfileName, isFolder)) - return 0; - else - return -1; - } - int down, up; - down = id < num-1 ? id : num-2; - up = down + 1; - while (down >= 0 || up < num) { - if (down >= 0) { - if (CheckFileData(fileList[down], data[id].relFilename, data[id].fileName, lowrelFileName, lowfileName, isFolder)) - return down; - down--; - } - if (up < num) { - if (CheckFileData(fileList[up], data[id].relFilename, data[id].fileName, lowrelFileName, lowfileName, isFolder)) - return up; - up++; - } - } - return -1; -} - -String FileDataArray::GetFileText() { - String ret; - - for (int i = 0; i < fileList.GetCount(); ++i) { - ret << fileList[i].relFilename << "; "; - ret << fileList[i].fileName << "; "; - ret << fileList[i].isFolder << "; "; - ret << fileList[i].length << "; "; - ret << fileList[i].t << "; "; - ret << fileList[i].id << "; "; - ret << "\n"; - } - return ret; -} - -bool FileDataArray::SaveFile(const char *fileName) { - return Upp::SaveFile(fileName, GetFileText()); -} - -bool FileDataArray::AppendFile(const char *fileName) { - return Upp::AppendFile(fileName, GetFileText()); -} - -bool FileDataArray::LoadFile(const char *fileName) -{ - Clear(); - StringParse in = Upp::LoadFile(fileName); - - if (in == "") - return false; - - int numData = in.Count("\n"); - fileList.SetCount(numData); - for (int row = 0; row < numData; ++row) { - fileList[row].relFilename = in.GetText(";"); - fileList[row].fileName = in.GetText(";"); - fileList[row].isFolder = in.GetText(";") == "true" ? true : false; - if (fileList[row].isFolder) - folderCount++; - else - fileCount++; - fileList[row].length = in.GetUInt64(";"); - struct Upp::Time t; - StrToTime(t, in.GetText(";")); - fileList[row].t = t; - fileList[row].id = in.GetUInt64(";"); - } - return true; -} - -String FileDataArray::GetRelativePath(const String &fullPath) { - if (basePath != fullPath.Left(basePath.GetCount())) - return ""; - return fullPath.Mid(basePath.GetCount()); -} - -int64 GetDirectoryLength(const char *directoryName) { - FileDataArray files; - files.Search(directoryName, "*.*", true); - return files.GetSize(); -} - -int64 GetLength(const char *fileName) { - if (FileExists(fileName)) - return GetFileLength(fileName); - else - return GetDirectoryLength(fileName); -} - -FileDiffArray::FileDiffArray() { - Clear(); -} - -void FileDiffArray::Clear() -{ - diffList.Clear(); -} - -// True if equal -bool FileDiffArray::Compare(FileDataArray &master, FileDataArray &secondary, const String folderFrom, - Array &excepFolders, Array &excepFiles, int sensSecs) { - if (master.GetCount() == 0) { - if (secondary.GetCount() == 0) - return true; - else - return false; - } else if (secondary.GetCount() == 0) - return false; - - bool equal = true; - diffList.Clear(); - Array secReviewed; - secReviewed.SetCount(secondary.GetCount(), false); - - for (int i = 0; i < master.GetCount(); ++i) { - bool cont = true; - if (master[i].isFolder) { - String fullfolder = AppendFileName(AppendFileName(folderFrom, master[i].relFilename), master[i].fileName); - for (int iex = 0; iex < excepFolders.GetCount(); ++iex) - if (PatternMatch(excepFolders[iex] + "*", fullfolder)) {// Subfolders included - cont = false; - break; - } - } else { - String fullfolder = AppendFileName(folderFrom, master[i].relFilename); - for (int iex = 0; iex < excepFolders.GetCount(); ++iex) - if (PatternMatch(excepFolders[iex] + "*", fullfolder)) { - cont = false; - break; - } - for (int iex = 0; iex < excepFiles.GetCount(); ++iex) - if (PatternMatch(excepFiles[iex], master[i].fileName)) { - cont = false; - break; - } - } - if (cont) { - int idSec = secondary.Find(master, i); - if (idSec >= 0) { - bool useId = master.UseId() && secondary.UseId(); - secReviewed[idSec] = true; - if (master[i].isFolder) - ; - else if ((useId && (master[i].id == secondary[idSec].id)) || - (!useId && (master[i].length == secondary[idSec].length) && - (abs(master[i].t - secondary[idSec].t) <= sensSecs))) - ; - else { - equal = false; - FileDiff &f = diffList.Add(); - bool isf = f.isFolder = master[i].isFolder; - f.relPath = master[i].relFilename; - String name = f.fileName = master[i].fileName; - f.idMaster = master[i].id; - f.idSecondary = secondary[idSec].id; - f.tMaster = master[i].t; - f.tSecondary = secondary[idSec].t; - f.lengthMaster = master[i].length; - f.lengthSecondary = secondary[idSec].length; - if (master[i].t > secondary[idSec].t) - f.action = 'u'; - else - f.action = 'p'; - } - } else { - equal = false; - FileDiff &f = diffList.Add(); - f.isFolder = master[i].isFolder; - f.relPath = master[i].relFilename; - f.fileName = master[i].fileName; - f.idMaster = master[i].id; - f.idSecondary = 0; - f.tMaster = master[i].t; - f.tSecondary = Null; - f.lengthMaster = master[i].length; - f.lengthSecondary = 0; - f.action = 'n'; - } - } - } - for (int i = 0; i < secReviewed.GetCount(); ++i) { - if (!secReviewed[i]) { - bool cont = true; - if (secondary[i].isFolder) { - String fullfolder = AppendFileName(AppendFileName(folderFrom, secondary[i].relFilename), secondary[i].fileName); - for (int iex = 0; iex < excepFolders.GetCount(); ++iex) - if (PatternMatch(excepFolders[iex] + "*", fullfolder)) { - cont = false; - break; - } - } else { - String fullfolder = AppendFileName(folderFrom, secondary[i].relFilename); - for (int iex = 0; iex < excepFolders.GetCount(); ++iex) - if (PatternMatch(excepFolders[iex] + "*", fullfolder)) { - cont = false; - break; - } - for (int iex = 0; iex < excepFiles.GetCount(); ++iex) - if (PatternMatch(excepFiles[iex], secondary[i].fileName)) { - cont = false; - break; - } - } - if (cont) { - equal = false; - FileDiff &f = diffList.Add(); - f.isFolder = secondary[i].isFolder; - f.relPath = secondary[i].relFilename; - f.fileName = secondary[i].fileName; - f.idMaster = 0; - f.idSecondary = secondary[i].id; - f.tMaster = Null; - f.tSecondary = secondary[i].t; - f.lengthMaster = 0; - f.lengthSecondary = secondary[i].length; - f.action = 'd'; - } - } - } - return equal; -} - -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) -String WinLastError() { - LPVOID lpMsgBuf; - String ret; - - FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, ::GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR) &lpMsgBuf, 0, NULL); - ret = (char *)lpMsgBuf; - LocalFree(lpMsgBuf); - return ret; -} -#endif - -bool FileDiffArray::Apply(String toFolder, String fromFolder, int flags) -{ - for (int i = 0; i < diffList.GetCount(); ++i) { - bool ok = true; - String dest = AppendFileName(toFolder, - AppendFileName(diffList[i].relPath, diffList[i].fileName)); - if (diffList[i].action == 'u' || diffList[i].action == 'd') { - if (diffList[i].isFolder) { - if (DirectoryExists(dest)) { - if (!SetReadOnly(dest, false)) - ok = false; - } - } else { - if (FileExists(dest)) { - if (!SetReadOnly(dest, false)) - ok = false; - } - } - } - if (!ok) { - String strError = t_("Not possible to modify ") + dest; - SetLastError(strError); - //return false; - } - - switch (diffList[i].action) { - case 'n': case 'u': - if (diffList[i].isFolder) { - if (!DirectoryExists(dest)) { - ok = DirectoryCreate(dest); //////////////////////////////////////////////////////////////////////////////////////// - } - } else { - if (FileExists(dest)) { - if (!SetReadOnly(dest, false)) - ok = false; - } - if (ok) { - ok = FileCopy(AppendFileName(fromFolder, FormatInt(i)), dest); - diffList[i].tSecondary = diffList[i].tMaster; - } - } - - if (!ok) { - String strError = t_("Not possible to create ") + dest; -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) - strError += ". " + WinLastError(); -#endif - SetLastError(strError); - //return false; - } - break; - case 'd': - if (diffList[i].isFolder) { - if (DirectoryExists(dest)) - ok = DeleteFolderDeep(dest); // Necessary to add the "X" - } else { - if (FileExists(dest)) - ok = FileDeleteX(dest, flags); - } - if (!ok) { - String strError = t_("Not possible to delete") + String(" ") + dest; -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) - strError += ". " + WinLastError(); -#endif - SetLastError(strError); - //return false; - } - break; - case 'p': - SetLastError(t_("There was a problem in the copy")); - //return false; - break; - } - } - return true; -} - -bool FileDiffArray::SaveFile(const char *fileName) -{ - return Upp::SaveFile(fileName, ToString()); -} - -String FileDiffArray::ToString() -{ - String ret; - - for (int i = 0; i < diffList.GetCount(); ++i) { - ret << diffList[i].action << "; "; - ret << diffList[i].isFolder << "; "; - ret << diffList[i].relPath << "; "; - ret << diffList[i].fileName << "; "; - ret << diffList[i].idMaster << "; "; - ret << diffList[i].idSecondary << "; "; - ret << diffList[i].tMaster << "; "; - ret << diffList[i].tSecondary << "; "; - ret << diffList[i].lengthMaster << "; "; - ret << diffList[i].lengthSecondary << "; "; - ret << "\n"; - } - return ret; -} - -bool FileDiffArray::LoadFile(const char *fileName) -{ - Clear(); - StringParse in = Upp::LoadFile(fileName); - - if (in == "") - return false; - - int numData = in.Count("\n"); - diffList.SetCount(numData); - for (int row = 0; row < numData; ++row) { - diffList[row].action = TrimLeft(in.GetText(";"))[0]; - diffList[row].isFolder = in.GetText(";") == "true" ? true : false; - diffList[row].relPath = in.GetText(";"); - diffList[row].fileName = in.GetText(";"); - diffList[row].idMaster = in.GetUInt64(";"); - diffList[row].idSecondary = in.GetUInt64(";"); - struct Upp::Time t; - StrToTime(t, in.GetText(";")); - diffList[row].tMaster = t; - StrToTime(t, in.GetText(";")); - diffList[row].tSecondary = t; - diffList[row].lengthMaster = in.GetUInt64(";"); - diffList[row].lengthSecondary = in.GetUInt64(";"); - } - return true; -} - - -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) -Value GetVARIANT(VARIANT &result) -{ - Value ret; - switch(result.vt) { - case VT_EMPTY: - case VT_NULL: - case VT_BLOB: - break; - case VT_BOOL: - ret = result.boolVal;// ? "true" : "false"; - break; - case VT_I2: - ret = result.iVal; - break; - case VT_I4: - ret = (int64)result.lVal; - break; - case VT_R4: - ret = AsString(result.fltVal); - break; - case VT_R8: - ret = AsString(result.dblVal); - break; - case VT_BSTR: - ret = WideToString(result.bstrVal); - break; - case VT_LPSTR: - //ret = result.pszVal; - ret = "Unknown VT_LPSTR"; - case VT_DATE: - SYSTEMTIME stime; - VariantTimeToSystemTime(result.date, &stime); - { - Time t; - t.day = (Upp::byte)stime.wDay; - t.month = (Upp::byte)stime.wMonth; - t.year = stime.wYear; - t.hour = (Upp::byte)stime.wHour; - t.minute = (Upp::byte)stime.wMinute; - t.second = (Upp::byte)stime.wSecond; - ret = t; - } - break; - case VT_CF: - ret = "(Clipboard format)"; - break; - } - return ret; -} - -String WideToString(LPCWSTR wcs, int len) { - if (len == -1) { - len = WideCharToMultiByte(CP_UTF8, 0, wcs, len, NULL, 0, NULL, NULL); - if (len == 0) - return Null; - } - Buffer w(len); - WideCharToMultiByte(CP_UTF8, 0, wcs, len, w, len, NULL, NULL); - return ~w; -} - -#endif - -#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) - -Dl::Dl() { - hinstLib = 0; -} - -Dl::~Dl() { - if (hinstLib) - if (FreeLibrary(hinstLib) == 0) - throw Exc(t_("Dl cannot be released")); -} - -#ifndef LOAD_IGNORE_CODE_AUTHZ_LEVEL - #define LOAD_IGNORE_CODE_AUTHZ_LEVEL 0x00000010 -#endif - -bool Dl::Load(const String &fileDll) { - if (hinstLib) - if (FreeLibrary(hinstLib) == 0) - return false; - - hinstLib = LoadLibraryEx(TEXT(fileDll), NULL, LOAD_IGNORE_CODE_AUTHZ_LEVEL); - if (!hinstLib) - return false; - return true; -} - -void *Dl::GetFunction(const String &functionName) { - if (!hinstLib) - return NULL; - return (void *)GetProcAddress(hinstLib, functionName); -} - -#else - -#include - -Dl::Dl() { - hinstLib = 0; -} - -Dl::~Dl() { - if (hinstLib) - if (dlclose(hinstLib) == 0) - throw Exc(t_("Dl cannot be released")); -} - -bool Dl::Load(const String &fileDll) { - if (hinstLib) - if (dlclose(hinstLib) == 0) - return false; - - hinstLib = dlopen(fileDll, RTLD_LAZY); - if (!hinstLib) - return false; - return true; -} - -void *Dl::GetFunction(const String &functionName) { - if (!hinstLib) - return NULL; - return dlsym(hinstLib, functionName); -} - -#endif - -Color RandomColor() { - return Color(Random(), 0); -} - -Image GetRect(const Image& orig, const Rect &r) { - if(r.IsEmpty()) - return Image(); - ImageBuffer ib(r.GetSize()); - for(int y = r.top; y < r.bottom; y++) { - const RGBA *s = orig[y] + r.left; - const RGBA *e = orig[y] + r.right; - RGBA *t = ib[y - r.top]; - while(s < e) { - *t = *s; - t++; - s++; - } - } - return ib; -} - +#include + +#include "Functions4U.h" + +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) +#define Ptr Ptr_ +#define byte byte_ +#define CY win32_CY_ + +#include +#include +#include + +#undef Ptr +#undef byte +#undef CY +#endif + +NAMESPACE_UPP + +#define TFILE +#include + +/* +Hi Koldo, + +I checked the functions in Functions4U. Here are some notes about trashing: + + * On older systems, the trash folder was $HOME/.Trash + * Your implementation of disregards the folder $HOME/.local/share/trash/info. You should create + there a .trashinfo file when moving something in trash and delete it when deleting corresponding file permanently. + * If you delete something on different partition than $HOME, you should also check if .Trash-XXXX + exists in root of that partition (XXXX is id of user who deleted the files in it). + +.local/share/Trash/files +.local/share/Trash/info + +Un fichero por cada vez que se borra con + +KK.trashinfo +[Trash Info] +Path=/home/pubuntu/KK +DeletionDate=2010-05-19T18:00:52 + + + +You might also be interested in following: + + * Official trash specification from freedesktop.org + * Project implementing command line access to trash (unfortunately in python) according to the specification mentioned above + + +Hope this might help Smile It definitely learned me a lot of new things Very Happy + +Best regards, +Honza +*/ + +///////////////////////////////////////////////////////////////////// +// LaunchFile + +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) +bool LaunchFileCreateProcess(const char *file) { + STARTUPINFOW startInfo; + PROCESS_INFORMATION procInfo; + + ZeroMemory(&startInfo, sizeof(startInfo)); + startInfo.cb = sizeof(startInfo); + ZeroMemory(&procInfo, sizeof(procInfo)); + + WString wexec; + wexec = Format("\"%s\" \"%s\"", GetExtExecutable(GetFileExt(file)), file).ToWString(); + WStringBuffer wsbexec(wexec); + + if(!CreateProcessW(NULL, wsbexec, NULL, NULL, FALSE, 0, NULL, NULL, &startInfo, &procInfo)) + return false; + + WaitForSingleObject(procInfo.hProcess, 0); + + CloseHandle(procInfo.hProcess); + CloseHandle(procInfo.hThread); + return true; +} + +bool LaunchFileShellExecute(const char *file) { + return 32 < int(ShellExecuteW(NULL, L"open", ToSystemCharsetW(file), NULL, L".", SW_SHOWNORMAL)); +} + +bool LaunchFile(const char *_file) { + String file = WinPath(_file); + if (!LaunchFileShellExecute(file)) // First try + return LaunchFileCreateProcess(file); // Second try + return true; +} +#endif +#ifdef PLATFORM_POSIX + +String GetDesktopManagerNew() { + if(GetEnv("GNOME_DESKTOP_SESSION_ID").GetCount() || GetEnv("GNOME_KEYRING_SOCKET").GetCount()) + return "gnome"; + else if(GetEnv("KDE_FULL_SESSION").GetCount() || GetEnv("KDEDIR").GetCount() || GetEnv("KDE_MULTIHEAD").GetCount()) + return "kde"; + else { + StringParse desktopStr; + if (Sys("xprop -root _DT_SAVE_MODE").Find("xfce") >= 0) + return "xfce"; + else if ((desktopStr = Sys("xprop -root")).Find("ENLIGHTENMENT") >= 0) + return "enlightenment"; + else + return GetEnv("DESKTOP_SESSION"); + } +} + +bool LaunchFile(const char *_file) { + String file = UnixPath(_file); + int ret; + if (GetDesktopManagerNew() == "gnome") + ret = system("gnome-open \"" + String(file) + "\""); + else if (GetDesktopManagerNew() == "kde") + ret = system("kfmclient exec \"" + String(file) + "\" &"); + else if (GetDesktopManagerNew() == "enlightenment") { + String mime = GetExtExecutable(GetFileExt(file)); + String program = mime.Left(mime.Find(".")); // Left side of mime executable is the program to run + ret = system(program + " \"" + String(file) + "\" &"); + } else + ret = system("xdg-open \"" + String(file) + "\""); + return (ret >= 0); +} +#endif + +///////////////////////////////////////////////////////////////////// +// General utilities + +bool FileCat(const char *file, const char *appendFile) { + if (!FileExists(file)) + return FileCopy(appendFile, file); + FileAppend f(file); + if(!f.IsOpen()) + return false; + FileIn fi(appendFile); + if(!fi.IsOpen()) + return false; + CopyStream(f, fi, fi.GetLeft()); + fi.Close(); + f.Close(); + if(f.IsError()) + return false; + return true; +} + +bool FileStrAppend(const char *file, const char *str) { + FileAppend f(file); + if(!f.IsOpen()) + return false; + f << str; + f.Close(); + if(f.IsError()) + return false; + return true; +} + +bool AppendFile(const char *file, const char *str) {return FileStrAppend(file, str);}; + +String AppendFileName(const String& path1, const char *path2, const char *path3) { + String result = path1; + if(result.GetLength() && *result.Last() != DIR_SEP && *path2 != DIR_SEP) + result += DIR_SEP; + result += path2; + if(result.GetLength() && *result.Last() != DIR_SEP && *path3 != DIR_SEP) + result += DIR_SEP; + result += path3; + return result; +} + +String FormatLong(long a) { + return Sprintf("%ld", a); +} + +String Replace(String str, String find, String replace) { + String ret; + + int lenStr = str.GetCount(); + int lenFind = find.GetCount(); + int i = 0, j; + while ((j = str.Find(find, i)) >= i) { + ret += str.Mid(i, j-i) + replace; + i = j + lenFind; + if (i >= lenStr) + break; + } + ret += str.Mid(i); + return ret; +} + +String Replace(String str, char find, char replace) { + StringBuffer ret(str); + for (int i = 0; i < ret.GetCount(); ++i) { + if (ret[i] == find) + ret[i] = replace; + } + return ret; +} + +bool FileMoveX(const char *oldpath, const char *newpath, int flags) { + bool usr, grp, oth; + if (flags & DELETE_READ_ONLY) { + if (IsReadOnly(oldpath, usr, grp, oth)) + SetReadOnly(oldpath, false, false, false); + } + bool ret = FileMove(oldpath, newpath); + if (flags & DELETE_READ_ONLY) + SetReadOnly(newpath, usr, grp, oth); + return ret; +} + +bool FileDeleteX(const char *path, int flags) { + if (flags & USE_TRASH_BIN) + return FileToTrashBin(path); + else { + if (flags & DELETE_READ_ONLY) + SetReadOnly(path, false, false, false); + return FileDelete(path); + } +} + +bool DirectoryExistsX(const char *path, int flags) { + if (!(flags & BROWSE_LINKS)) + return DirectoryExists(path); + if (DirectoryExists(path)) + return true; + if (!IsSymLink(path)) + return false; + String filePath; + filePath = GetSymLinkPath(path); + if (filePath.IsEmpty()) + return false; + return DirectoryExists(filePath); +} + +bool ReadOnly(const char *path, bool readOnly) { + return SetReadOnly(path, readOnly); +} + +bool ReadOnly(const char *path, bool usr, bool grp, bool oth) { + return SetReadOnly(path, usr, grp, oth); +} + +bool SetReadOnly(const char *path, bool readOnly) { + return SetReadOnly(path, readOnly, readOnly, readOnly); +} + +bool SetReadOnly(const char *path, bool usr, bool grp, bool oth) { +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) + DWORD attr = GetFileAttributesW(ToSystemCharsetW(path)); + + if (attr == INVALID_FILE_ATTRIBUTES) + return false; + + DWORD newattr; + if (usr) + newattr = attr | FILE_ATTRIBUTE_READONLY; + else + newattr = attr & ~FILE_ATTRIBUTE_READONLY; + + if (attr != newattr) + return SetFileAttributesW(ToSystemCharsetW(path), newattr); + else + return true; +#else + struct stat buffer; + int status; + + if(0 != stat(ToSystemCharset(path), &buffer)) + return false; + + mode_t newmode = (usr & S_IRUSR) | (grp & S_IRGRP) | (oth & S_IROTH); + + if (newmode != buffer.st_mode) + return 0 == chmod(ToSystemCharset(path), newmode); + else + return true; +#endif +} + +bool IsReadOnly(const char *path, bool &usr, bool &grp, bool &oth) { +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) + DWORD attr = GetFileAttributesW(ToSystemCharsetW(path)); + + if (attr == INVALID_FILE_ATTRIBUTES) + return false; + + usr = grp = oth = attr & FILE_ATTRIBUTE_READONLY; + return true; +#else + struct stat buffer; + + if(0 != stat(ToSystemCharset(path), &buffer)) + return false; + + usr = buffer.st_mode & S_IRUSR; + grp = buffer.st_mode & S_IRGRP; + oth = buffer.st_mode & S_IROTH; + + return true; +#endif +} + +#ifdef PLATFORM_POSIX + +int GetUid() { + String proc = LoadFile_Safe("/etc/passwd"); + int pos = proc.Find(GetUserName()); + if (pos < 0) + return -1; + pos = proc.Find(':', pos); + if (pos < 0) + return -1; + pos = proc.Find(':', pos+1); + if (pos < 0) + return -1; + int posend = proc.Find(':', pos+1); + if (posend < 0) + return -1; + return ScanInt(proc.Mid(pos+1, posend-pos-1)); +} + +String GetMountDirectory(const String &path) { + Array drives = GetDriveList(); + for (int i = 0; i < drives.GetCount(); ++i) { + if (path.Find(drives[i]) == 0) + return drives[i]; + } + String localPath = AppendFileName(GetCurrentDirectory(), path); + if (!FileExists(localPath) && !DirectoryExists(localPath)) + return ""; + for (int i = 0; i < drives.GetCount(); ++i) { + if (localPath.Find(drives[i]) == 0) + return drives[i]; + } + return ""; +} + +String GetTrashBinDirectory() +{ + String ret = GetEnv("XDG_DATA_HOME"); + if (ret.IsEmpty()) + ret = AppendFileName(GetHomeDirectory(), ".local/share/Trash"); + else + ret = AppendFileName(ret, "Trash"); + return ret; +} + +bool FileToTrashBin(const char *path) +{ + String newPath = AppendFileName(GetTrashBinDirectory(), GetFileName(path)); + return FileMove(path, newPath); +} + +int64 TrashBinGetCount() +{ + int64 ret = 0; + FindFile ff; + if(ff.Search(AppendFileName(GetTrashBinDirectory(), "*"))) { + do { + String name = ff.GetName(); + if (name != "." && name != "..") + ret++; + } while(ff.Next()); + } + return ret; +} + +bool TrashBinClear() +{ + FindFile ff; + String trashBinDirectory = GetTrashBinDirectory(); + if(ff.Search(AppendFileName(trashBinDirectory, "*"))) { + do { + String name = ff.GetName(); + if (name != "." && name != "..") { + String path = AppendFileName(trashBinDirectory, name); + if (ff.IsFile()) + FileDelete(path); + else if (ff.IsDirectory()) + DeleteFolderDeep(path); + } + } while(ff.Next()); + } + return true; +} + +#endif +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) + +bool FileToTrashBin(const char *path) +{ + if (!FileExists(path) && !DirectoryExists(path)) + return false; + + WString ws(path); + ws.Cat() << L'\0'; // This string must be double-null terminated. + + SHFILEOPSTRUCTW fileOp; + + fileOp.hwnd = NULL; + fileOp.wFunc = FO_DELETE; + fileOp.pFrom = ~ws; + fileOp.pTo = NULL; + fileOp.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION | FOF_SILENT; + + int ret = SHFileOperationW(&fileOp); + if (0 != ret) + return false; + return true; +} + +int64 TrashBinGetCount() +{ + SHQUERYRBINFO shqbi; + + shqbi.cbSize = sizeof(SHQUERYRBINFO); + if (S_OK != SHQueryRecycleBin(0, &shqbi)) + return -1; + return shqbi.i64NumItems; +} + +bool TrashBinClear() +{ + if (S_OK != SHEmptyRecycleBin(0, 0, SHERB_NOCONFIRMATION | SHERB_NOPROGRESSUI | SHERB_NOSOUND)) + return false; + return true; +} + +#endif + +#include +#include +#include + +// This system files are like pipes: it is not possible to get the length to size the buffer +String LoadFile_Safe(String fileName) +{ +#ifdef PLATFORM_POSIX + int fid = open(fileName, O_RDONLY); +#else + int fid = _wopen(fileName.ToWString(), O_RDONLY|O_BINARY); +#endif + if (fid < 0) + return String(""); + const int size = 1024; + int nsize; + StringBuffer s; + char buf[size]; + while((nsize = read(fid, buf, size)) == size) + s.Cat(buf, size); + if (nsize > 1) + s.Cat(buf, nsize-1); + close(fid); + return s; +} + +String GetExtExecutable(String ext) +{ + String exeFile = ""; + if (ext[0] != '.') + ext = String(".") + ext; +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) + String file = AppendFileName(GetHomeDirectory(), String("dummy") + ext); // Required by FindExecutableW + SaveFile(file, " "); + if (!FileExists(file)) + return ""; + HINSTANCE ret; + WString fileW(file); + WCHAR exe[1024]; + ret = FindExecutableW(fileW, NULL, exe); + if ((long)ret > 32) + exeFile = WString(exe).ToString(); + DeleteFile(file); +#endif +#ifdef PLATFORM_POSIX + StringParse mime; + //if (LaunchCommand(String("xdg-mime query filetype ") + file, mime) >= 0) // xdg-mime query filetype does not work properly in Enlightenment + mime = LoadFile_Safe("/etc/mime.types"); // Search in /etc/mime.types the mime type for the extension + if ((mime.GoAfter_Init(String(" ") + ext.Right(ext.GetCount()-1))) || (mime.GoAfter_Init(String("\t") + ext.Right(ext.GetCount()-1)))) { + mime.GoBeginLine(); + mime = mime.GetText(); + exeFile = TrimRight(Sys(String("xdg-mime query default ") + mime)); + } +#endif + return exeFile; +} + +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) +Array GetDriveList() { + char drvStr[26*4+1]; // A, B, C, ... + Array ret; + + int lenDrvStrs = ::GetLogicalDriveStrings(sizeof(drvStr), drvStr); + // To get the error call GetLastError() + if (lenDrvStrs == 0) + return ret; + + ret.Add(drvStr); + for (int i = 0; i < lenDrvStrs-1; ++i) { + if (drvStr[i] == '\0') + ret.Add(drvStr + i + 1); + } + return ret; +} +#endif +#if defined(PLATFORM_POSIX) +Array GetDriveList() { + Array ret; + // Search for mountable file systems + String mountableFS = "cofs."; + StringParse sfileSystems(LoadFile_Safe("/proc/filesystems")); + String str; + while (true) { + str = sfileSystems.GetText(); + if (str == "") + break; + else if (str != "nodev") + mountableFS << str << "."; + else + str = sfileSystems.GetText(); + } + // Get mounted drives + StringParse smounts(LoadFile_Safe("/proc/mounts")); + StringParse smountLine(Trim(smounts.GetText("\r\n"))); + do { + String devPath = smountLine.GetText(); + String mountPath = smountLine.GetText(); + String fs = smountLine.GetText(); + if ((mountableFS.Find(fs) >= 0) && (mountPath.Find("/dev") < 0) + && (mountPath.Find("/rofs") < 0) && (mountPath != "/")) // Is mountable + ret.Add(mountPath); + smountLine = Trim(smounts.GetText("\r\n")); + } while (smountLine != ""); + ret.Add("/"); // Last but not least + return ret; +} +#endif +/* Replaced by GetCurrentDirectory() and SetCurrentDirectory() +String Getcwd() { +#if defined(PLATFORM_WIN32) || defined(PLATFORM_WIN64) + wchar ret[MAX_PATH]; + if (_wgetcwd(ret, MAX_PATH)) + return FromSystemCharsetW(ret); +#else +#define MAX_PATH 1024 + char ret[MAX_PATH]; + if (getcwd(ret, MAX_PATH)) + return String(ret); +#endif + return Null; +} + +bool Chdir (const String &folder) { +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) + return 0 == _wchdir(ToSystemCharsetW(folder)); +#else + return 0 == chdir(folder); +#endif +} +*/ +/* +String Format(Time time, const char *fmt) { + String s; + if(IsNull(time)) + return String(); + + return Format(Date(time)) + Format(fmt, time.hour, time.minute, time.second); +} + +String GetFirefoxDownloadFolder() +{ + String profilesPath = "mozilla/firefox"; +#ifdef PLATFORM_POSIX // Is hidden + profilesPath = String(".") + profilesPath; +#endif + StringParse profiles = LoadFile(AppendFileName(GetAppDataFolder(), AppendFileName(profilesPath, "profiles.ini"))); + if (!profiles.GoAfter("Path")) return ""; + if (!profiles.GoAfter("=")) return ""; + String path = profiles.GetText(); + String pathPrefs = AppendFileName(AppendFileName(AppendFileName(GetAppDataFolder(), profilesPath), path), "prefs.js"); + StringParse prefs = LoadFile(pathPrefs); + if (!prefs.GoAfter("\"browser.download.dir\"")) { + if (!prefs.GoAfter("\"browser.download.lastDir\"")) + return ""; + } + if (!prefs.GoAfter(",")) return ""; + return prefs.GetText(); +} +*/ + +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) +String GetShellFolder2(int clsid) +{ + wchar path[MAX_PATH]; + if(SHGetFolderPathW(NULL, clsid, NULL, //SHGFP_TYPE_CURRENT + 0, path) == S_OK) + return FromUnicodeBuffer(path); + return Null; +} + +String GetShellFolder2(const char *local, const char *users) +{ + String ret = FromSystemCharset(GetWinRegString(local, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", + HKEY_CURRENT_USER)); + if (ret == "" && *users != '\0') + return FromSystemCharset(GetWinRegString(users, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", + HKEY_LOCAL_MACHINE)); + return ret; +} +/* +String GetIEDownloadFolder() +{ + String ret = FromSystemCharset(GetWinRegString("Download Directory", "Software\\Microsoft\\Internet Explorer", HKEY_CURRENT_USER)); + if (ret == "") + ret = FromSystemCharset(GetWinRegString("Save Directory", "Software\\Microsoft\\Internet Explorer\\Main", HKEY_CURRENT_USER)); + return ret; +} +String GetDesktopFolder() {return GetShellFolder("Desktop", "Common Desktop");} +String GetProgramsFolder() {return FromSystemCharset(GetWinRegString("ProgramFilesDir", "Software\\Microsoft\\Windows\\CurrentVersion", HKEY_LOCAL_MACHINE));} +String GetAppDataFolder() {return GetShellFolder("AppData", "Common AppData");} +String GetMusicFolder() {return GetShellFolder("My Music", "CommonMusic");} +String GetPicturesFolder() {return GetShellFolder("My Pictures", "CommonPictures");} +String GetVideoFolder() {return GetShellFolder("My Video", "CommonVideo");} +String GetTemplatesFolder() {return GetShellFolder("Templates", "Common Templates");} +String GetDownloadFolder() +{ + String browser = GetExtExecutable("html"); + browser = ToLower(browser); + if (browser.Find("iexplore") >= 0) + return GetIEDownloadFolder(); + else if (browser.Find("firefox") >= 0) + return GetFirefoxDownloadFolder(); + return GetDesktopFolder(); // I do not know to do it in other browsers !! +}; +*/ +String GetPersonalFolder() {return GetShellFolder2("Personal", 0);} +String GetStartupFolder() {return GetShellFolder2(CSIDL_STARTUP);} + +String GetTempFolder() +{ + String ret; + if ((ret = GetEnv("TEMP")) == "") // One or the other one + ret = GetEnv("TMP"); + return ret; +} + +String GetOsFolder() +{ + char ret[MAX_PATH]; + ::GetWindowsDirectory(ret, MAX_PATH); + return String(ret); +} +String GetSystemFolder() +{ + char ret[MAX_PATH]; + ::GetSystemDirectory(ret, MAX_PATH); + return String(ret); +} + +bool SetEnv(const char *id, const char *val) +{ +// EnvMap().Put(WString(id), WString(val)); +#ifdef PLATFORM_POSIX + return setenv(id, val, 1) == 0; +#else + return _wputenv(WString(id) + "=" + WString(val)) == 0; +#endif +} + + +#endif +#ifdef PLATFORM_POSIX + +String GetPathXdg2(String xdgConfigHome, String xdgConfigDirs) +{ + String ret = ""; + if (FileExists(ret = AppendFileName(xdgConfigHome, "user-dirs.dirs"))) ; + else if (FileExists(ret = AppendFileName(xdgConfigDirs, "user-dirs.defaults"))) ; + else if (FileExists(ret = AppendFileName(xdgConfigDirs, "user-dirs.dirs"))) ; + return ret; +} +String GetPathDataXdg2(String fileConfig, const char *folder) +{ + StringParse fileData = LoadFile(fileConfig); + + if (!fileData.GoAfter(folder)) return ""; + if (!fileData.GoAfter("=")) return ""; + + String ret = ""; + StringParse path = fileData.GetText(); + if(path.GoAfter("$HOME/")) + ret = AppendFileName(GetHomeDirectory(), path.Right()); + else if (!FileExists(path)) + ret = AppendFileName(GetHomeDirectory(), path); + + return ret; +} +String GetShellFolder2(const char *local, const char *users) +{ + String xdgConfigHome = GetEnv("XDG_CONFIG_HOME"); + if (xdgConfigHome == "") // By default + xdgConfigHome = AppendFileName(GetHomeDirectory(), ".config"); + String xdgConfigDirs = GetEnv("XDG_CONFIG_DIRS"); + if (xdgConfigDirs == "") // By default + xdgConfigDirs = "/etc/xdg"; + String xdgFileConfigData = GetPathXdg2(xdgConfigHome, xdgConfigDirs); + String ret = GetPathDataXdg2(xdgFileConfigData, local); + if (ret == "" && *users != '\0') + return GetPathDataXdg2(xdgFileConfigData, users); + else + return ret; +} + +String GetTempFolder() +{ + return GetHomeDirectory(); +} +String GetOsFolder() +{ + return String("/bin"); +} +String GetSystemFolder() +{ + return String(""); +} + +String GetPersonalFolder() {return GetShellFolder2("XDG_DOCUMENTS_DIR", "DOCUMENTS");} + +#endif + +struct StringNormalCompare__ { + int operator()(char a, char b) const { return a - b; } +}; + +int Compare(const String& a, int i0, const String& b, int len) { + return IterCompare(a.Begin() + i0, a.Begin() + i0 + len, b.Begin(), b.Begin() + len, StringNormalCompare__()); +} + +int ReverseFind(const String& s, const String& toFind, int from) { + ASSERT(from >= 0 && from <= s.GetLength()); + int lc = toFind.GetLength(); + for (int i = from; i >= 0; --i) { + if (Compare(s, i, toFind, lc) == 0) + return i; + } + return -1; +} + +Time StrToTime(const char *s) { + Time ret; + if (StrToTime(ret, s)) + return ret; + else + return Null; +} + +Date StrToDate(const char *s) { + Time ret; + if (StrToDate(ret, s)) + return ret; + else + return Null; +} + +void StringToHMS(String durat, int &hour, int &min, double &seconds) { + StringParse duration(durat); + String s1, s2, s3; + s1 = duration.GetText(":"); + s2 = duration.GetText(":"); + s3 = duration.GetText(); + + if (s3 != "") { + hour = atoi(s1); + min = atoi(s2); + seconds = atof(s3); + } else if (s2 != "") { + hour = 0; + min = atoi(s1); + seconds = atof(s2); + } else { + hour = 0; + min = 0; + seconds = atof(s1); + } +} +double StringToSeconds(String duration) { + int hour, min; + double secs; + StringToHMS(duration, hour, min, secs); + return 60.*hour + 60.*min + secs; +} + +String formatSeconds(double seconds) { + String ret = FormatIntDec((int)seconds, 2, '0'); + double decs = seconds - (int)seconds; + if (decs > 0) + ret << "." << FormatIntDec((int)(decs*100), 2, '0'); + return ret; +} + +String HMSToString(int hour, int min, double seconds, bool units, bool dec) { + String sunits; + if (units) { + if (hour >= 2) + sunits = t_("hours"); + else if (hour == 1) + sunits = t_("hour"); + else if (min >= 2) + sunits = t_("mins"); + else if (min == 1) + sunits = t_("min"); + else if (seconds > 1) + sunits = t_("secs"); + else + sunits = t_("sec"); + } + String ret; + if (hour > 0) + ret << hour << ":"; + if (min > 0 || hour > 0) + ret << (ret.IsEmpty() ? FormatInt(min) : FormatIntDec(min, 2, '0')) << ":"; + if (!dec) + ret << int(seconds); + else + ret << (ret.IsEmpty() ? FormatDouble(seconds, 2, FD_REL) : formatSeconds(seconds)); + if (units) + ret << " " << sunits; + return ret; +} + +String SecondsToString(double seconds, bool units, bool dec) { + int hour, min; + hour = (int)(seconds/3600.); + seconds -= hour*3600; + min = (int)(seconds/60.); + seconds -= min*60; + return HMSToString(hour, min, seconds, units); +} + +String BytesToString(uint64 _bytes, bool units) +{ + String ret; + uint64 bytes = _bytes; + + if (bytes >= 1024) { + bytes /= 1024; + if (bytes >= 1024) { + bytes /= 1024; + if (bytes >= 1024) { + bytes /= 1024; + if (bytes >= 1024) { + bytes /= 1024; + ret = Format("%.1f %s", _bytes/(1024*1024*1024*1024.), units ? "Tb" : ""); + } else + ret = Format("%.1f %s", _bytes/(1024*1024*1024.), units ? "Gb" : ""); + } else + ret = Format("%.1f %s", _bytes/(1024*1024.), units ? "Mb" : ""); + } else + ret = Format("%.1f %s", _bytes/1024., units ? "Kb" : ""); + } else + ret << _bytes << (units ? "b" : ""); + return ret; +} + +String FormatDoubleAdjust(double d, double range) { + if (fabs(d) <= 1e-15) + d = 0; + if (0.001 <= range && range < 0.01) return FormatDouble(d,5); + else if (0.01 <= range && range < 0.1) return FormatDouble(d,4); + else if (0.1 <= range && range < 1) return FormatDouble(d,3); + else if (1 <= range && range < 10) return FormatDouble(d,2); + else if (10 <= range && range < 100) return FormatDouble(d,1); + else if (100 <= range && range < 100000) return FormatDouble(d,0); + else return FormatDoubleExp(d,2); +} + +String RemoveAccent(wchar c) { + WString wsret; + + if (IsAlNum(c) || IsSpace(c)) { + wsret.Cat(c); + return wsret.ToString(); + } + //const WString accented = "ÂÃÀÁÇÈÉÊËẼÌÍÎÏÑÒÓÔÕÙÚÛÝàáâãçèéêëẽìíîïñòóôõøùúûýÿ"; + const WString accented = "\303\202\303\203\303\200\303\201\303\207\303\210\303\211\303\212\303\213\341\272\274\303\214\303\215\303\216\303\217\303\221\303\222\303\223\303\224\303\225\303\231\303\232\303\233\303\235\303\240\303\241\303\242\303\243\303\247\303\250\303\251\303\252\303\253\341\272\275\303\254\303\255\303\256\303\257\303\261\303\262\303\263\303\264\303\265\303\270\303\271\303\272\303\273\303\275\303\277"; + const char *unaccented = "AAAACEEEEEIIIINOOOOUUUYaaaaceeeeeiiiinooooouuuyy"; + + for (int i = 0; accented[i]; ++i) { + if (accented[i] == c) { + wsret.Cat(unaccented[i]); + return wsret.ToString(); + } + } + //const WString maccented = "ÅåÆæØøþÞßÐðÄäÖöÜü"; + const WString maccented = "\303\205\303\245\303\206\303\246\303\230\303\270\303\276\303\236\303\237\303\220\303\260\303\204\303\244\303\226\303\266\303\234\303\274"; + const char *unmaccented[] = {"AA", "aa", "AE", "ae", "OE", "oe", "TH", "th", "SS", "ETH", + "eth", "AE", "ae", "OE", "oe", "UE", "ue"}; + for (int i = 0; maccented[i]; ++i) { + if (maccented[i] == c) + return unmaccented[i]; + } + wsret.Cat(c); + return wsret.ToString(); +} + +bool IsPunctuation(wchar c) { + //const WString punct = "\"’'()[]{}<>:;,‒–—―….,¡!¿?«»-‐‘’“”/\\&@*\\•^©¤฿¢$€ƒ£₦¥₩₪†‡〃#№ºª\%‰‱ ¶′®§℠℗~™|¦="; + const WString punct = "\"\342\200\231'()[]{}<>:;,\342\200\222\342\200\223\342\200\224\342\200\225\342\200\246.,\302\241!\302\277?\302\253\302\273-\342\200\220\342\200\230\342\200\231\342\200\234\342\200\235/\\&@*\\\342\200\242^\302\251\302\244\340\270\277\302\242$\342\202\254\306\222\302\243\342\202\246\302\245\342\202\251\342\202\252\342\200\240\342\200\241\343\200\203#\342\204\226\302\272\302\252%\342\200\260\342\200\261 " + "\302\266\342\200\262\302\256\302\247\342\204\240\342\204\227~\342\204\242|\302\246="; + for (int i = 0; punct[i]; ++i) { + if (punct[i] == c) + return true; + } + return false; +} + +String RemoveAccents(String str) { + String ret; + WString wstr = str.ToWString(); + for (int i = 0; i < wstr.GetCount(); ++i) { + String schar = RemoveAccent(wstr[i]); + if (i == 0 || ((i > 0) && ((IsSpace(wstr[i-1]) || IsPunctuation(wstr[i-1]))))) { + if (schar.GetCount() > 1) { + if (IsUpper(schar[0]) && IsLower(wstr[1])) + schar = schar[0] + ToLower(schar.Mid(1)); + } + } + ret += schar; + } + return ret; +} + +String RemovePunctuation(String str) { + String ret; + WString wstr = str.ToWString(); + for (int i = 0; i < wstr.GetCount(); ++i) { + if (!IsPunctuation(wstr[i])) + ret += wstr[i]; + } + return ret; +} + +String FitFileName(String fileName, int len) { + if (fileName.GetCount() <= len) + return fileName; + + Array path; + + const char *s = fileName; + char c; + int pos0 = 0; + for (int pos1 = 0; (c = s[pos1]) != '\0'; ++pos1) { + #if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) + if(c == '\\' || c == '/') { + #else + if(c == '/') { + #endif + path.Add(fileName.Mid(pos0, pos1-pos0)); + pos0 = ++pos1; + } + } + path.Add(fileName.Mid(pos0)); + + String begin, end; + int iBegin = 0; + int iEnd = path.GetCount() - 1; + + if (path[iEnd].GetCount() >= len) + return path[iEnd].Left(len); + if (path[iEnd].GetCount() >= len-4) + return path[iEnd]; + + len -= 3; // ... + + for (; iBegin <= iEnd; iBegin++, iEnd--) { + if (path[iEnd].GetCount() + 1 > len) + break; + end = DIR_SEPS + path[iEnd] + end; + len -= path[iEnd].GetCount() + 1; + if (path[iBegin].GetCount() + 1 > len) + break; + begin += path[iBegin] + DIR_SEPS; + len -= path[iBegin].GetCount() + 1; + } + return begin + "..." + end; +} + +String Tokenize(const String &str, const String &token, int &pos) { + int npos; + for (int i = 0; i < token.GetCount(); ++i) { + if ((npos = str.Find(token[i], pos)) >= 0) + break; + } + int oldpos = pos; + if (npos < 0) { + pos = str.GetCount(); + return str.Mid(oldpos); + } else { + pos = npos + 1; + return str.Mid(oldpos, npos-oldpos); + } +} + +String Tokenize(const String &str, const String &token) { + int dummy = 0; + return Tokenize(str, token, dummy); +} + +String GetLine(const String &str, int &pos) { + String ret; + int npos = str.Find("\n", pos); + if (npos == -1) { + ret = str.Mid(pos); + pos = -1; + } else { + ret = str.Mid(pos, npos - pos); + pos = npos + 1; + } + return TrimBoth(ret); +} + +Value GetField(const String &str, int &pos, char separator) { + String sret; + int npos = str.Find(separator, pos); + if (npos <= -1) { + sret = str.Mid(pos); + pos = -1; + } else { + sret = str.Mid(pos, npos - pos); + pos = npos + 1; + } + sret = TrimBoth(sret); + if (!sret.IsEmpty() && sret[0] == '\"') + sret = sret.Mid(1); + if (!sret.IsEmpty() && sret[sret.GetLength()-1] == '\"') + sret = sret.Left(sret.GetLength()-1); + + if (sret.IsEmpty()) + return Null; + + double dbl = ScanDouble(sret); + + if (IsNull(dbl)) + return sret; + else { + int it = int(dbl); + if (dbl - double(it) != 0) + return dbl; + else + return it; + } +} + +Vector > ReadCSV(const String strFile, char separator, bool removeRepeated) { + Vector > result; + + String line; + int posLine = 0; + line = GetLine(strFile, posLine); + int pos = 0; + while (pos >= 0) { + Value name = GetField(line, pos, separator); + if (!IsNull(name)) { + Vector &data = result.Add(); + data.Add(name); + } else + break; + } + while (posLine >= 0) { + pos = 0; + line = GetLine(strFile, posLine); + if (!line.IsEmpty()) { + bool repeated = removeRepeated; + int row = result[0].GetCount() - 1; + for (int col = 0; col < result.GetCount(); col++) { + if (pos >= 0) { + Value data = GetField(line, pos, separator); + result[col].Add(data); + if (row > 0 && result[col][row] != data) + repeated = false; + } else + result[col].Add(); + } + if (row > 0 && repeated) { + for (int col = 0; col < result.GetCount(); col++) + result[col].Remove(row+1); + } + } else + break; + } + return result; +}; + + +#ifdef PLATFORM_POSIX +String FileRealName(const char *fileName) { + fileName = GetFullPath(fileName); + FindFile ff(fileName); + if (!ff) + return String(""); + else + return fileName; +} +#endif +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) +bool GetRealName_Next(String &real, String file) { + bool ret; + String old; + int from = real.GetCount()+1; + int to = file.Find(DIR_SEP, from); + if (to >= 0) { + old = file.Mid(from, to-from); + ret = true; + } else { + old = file.Mid(from); + ret = false; + } + real += DIR_SEP; + FindFile ff(real + old); + real += ff.GetName(); + return ret; +} + +String FileRealName(const char *_fileName) { + String fileName = GetFullPath(_fileName); + int len = fileName.GetCount(); + + if (len == 3) { + FindFile ff(fileName + "*"); + if (!ff) + return String(""); + else + return fileName; + } + FindFile ff(fileName); + if (!ff) + return String(""); + String ret; + + ret.Reserve(len); + + ret = ToUpper(fileName.Left(1)) + ":"; + + while (GetRealName_Next(ret, fileName)) ; + + return ret; +} +#endif + +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) + +#define Ptr Ptr_ +#define byte byte_ +#define CY win32_CY_ + +#include +#include + +#include +#include + +#undef Ptr +#undef byte +#undef CY + +#endif +/* +bool GetSymLinkPath(const char *linkPath, String &filePath) +{ +#ifdef PLATFORM_WIN32 + HRESULT hres; + IShellLink* psl; + IPersistFile* ppf; + CoInitialize(NULL); + hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, + (PVOID *) &psl); + if(SUCCEEDED(hres)) { + hres = psl->QueryInterface(IID_IPersistFile, (PVOID *) &ppf); + if(SUCCEEDED(hres)) { + hres = ppf->Load(ToSystemCharsetW(linkPath), STGM_READ); + if(SUCCEEDED(hres)) { + char fileW[_MAX_PATH] = {0}; + psl->GetPath(fileW, _MAX_PATH, NULL, 0); + filePath = FromSystemCharset(fileW); + } else + return false; + ppf->Release(); + } else + return false; + psl->Release(); + } else + return false; + CoUninitialize(); + return true; +#else + char buff[_MAX_PATH + 1]; + bool ret; + int len = readlink(linkPath, buff, _MAX_PATH); + if (ret = (len > 0 && len < _MAX_PATH)) + buff[len] = '\0'; + else + *buff = '\0'; + filePath = buff; + return ret; +#endif +} +*/ +bool IsSymLink(const char *path) { +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) + return GetFileExt(path) == ".lnk"; +#else + struct stat stf; + lstat(path, &stf); + return S_ISLNK(stf.st_mode); +#endif +} + +String GetNextFolder(const String &folder, const String &lastFolder) { + int pos = lastFolder.Find(DIR_SEP, folder.GetCount()+1); + if (pos >= 0) + return lastFolder.Left(pos); + else + return lastFolder; +} + +bool UpperFolder(const char *folderName) { + if (!folderName) + return false; + if (folderName[0] == '\0') + return false; +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) + if (strlen(folderName) == 3) +#else + if (strlen(folderName) == 1) +#endif + return false; + return true; +} + +String GetUpperFolder(const String &folderName) { + if (!UpperFolder(folderName)) + return folderName; + int len = folderName.GetCount(); + if (folderName[len-1] == DIR_SEP) + len--; + int pos = folderName.ReverseFind(DIR_SEP, len-1); +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) + if (pos == 2) +#else + if (pos == 0) +#endif + pos++; + return folderName.Left(pos); +} + +bool CreateFolderDeep(const char *dir) +{ + if (RealizePath(dir)) + return DirectoryCreate(dir); + else + return false; +/* if (DirectoryExists(dir)) + return true; + String upper = GetUpperFolder(dir); + if (CreateFolderDeep(upper)) + return DirectoryCreate(dir); + else + return false; */ +} + +bool DeleteFolderDeepWildcards(const char *path, int flags) +{ + FindFile ff(path); + String dir = GetFileDirectory(path); + while(ff) { + String name = ff.GetName(); + String p = AppendFileName(dir, name); + if(ff.IsFile()) + FileDeleteX(p, flags); + else + if(ff.IsFolder()) + DeleteFolderDeep(p); + ff.Next(); + } + return DirectoryDelete(dir); +} + +bool RenameFolderDeepWildcards(const char *path, const char *namewc, const char *newname) +{ + FindFile ff(AppendFileName(path, "*.*")); + while(ff) { + if(ff.IsFolder()) { + String name = ff.GetName(); + String folder = AppendFileName(path, name); + if (!RenameFolderDeepWildcards(folder, namewc, newname)) + return false; + if (PatternMatch(namewc, name)) + if (!FileMove(folder, AppendFileName(path, newname))) { + dword error = GetLastError(); + return false; + } + } + ff.Next(); + } + return true; +} + +bool DirectoryCopy_Each(const char *dir, const char *newPlace, String relPath) +{ + String dirPath = AppendFileName(dir, relPath); + String newPath = AppendFileName(newPlace, relPath); + FindFile ff(AppendFileName(dirPath, "*.*")); + while(ff) { + if(ff.IsFile()) + FileCopy(AppendFileName(dirPath, ff.GetName()), AppendFileName(newPath, ff.GetName())); + else if(ff.IsFolder()) { + DirectoryCreate(AppendFileName(newPath, ff.GetName())); + if(!DirectoryCopy_Each(dir, newPlace, AppendFileName(relPath, ff.GetName()))) + return false; + } + ff.Next(); + } + return true; +} + +bool DirectoryCopyX(const char *dir, const char *newPlace) { + return DirectoryCopy_Each(dir, newPlace, ""); +} + +#if defined(__MINGW32__) + #define _SH_DENYNO 0x40 +#endif + +int FileCompare(const char *path1, const char *path2) { + int fp1; +#ifdef PLATFORM_POSIX + fp1 = open(ToSystemCharset(path1), O_RDONLY, S_IWRITE|S_IREAD); +#else + fp1 = _wsopen(ToSystemCharsetW(path1), O_RDONLY|O_BINARY, _SH_DENYNO, _S_IREAD|_S_IWRITE); +#endif + if (fp1 == -1) + return -2; + int fp2; +#ifdef PLATFORM_POSIX + fp2 = open(ToSystemCharset(path2), O_RDONLY, S_IWRITE|S_IREAD); +#else + fp2 = _wsopen(ToSystemCharsetW(path2), O_RDONLY|O_BINARY, _SH_DENYNO, _S_IREAD|_S_IWRITE); +#endif + if (fp2 == -1) { + close(fp1); + return -2; + } + Buffer c1(8192), c2(8192); + int ret = -1; + while (true) { + int n1 = read(fp1, c1, 8192); + int n2 = read(fp2, c2, 8192); + if (n1 == -1 || n2 == -1) { + ret = -2; + break; + } + if (n1 != n2) + break; + if (memcmp(c1, c2, n1) != 0) + break; + if (n1 == 0) { + ret = 1; + break; + } + } +#ifdef PLATFORM_POSIX + if (-1 == close(fp1)) + ret = -2; + if (-1 == close(fp2)) + ret = -2; +#else + if (-1 == _close(fp1)) + ret = -2; + if (-1 == _close(fp2)) + ret = -2; +#endif + return ret; +} + +int64 FindStringInFile(const char *file, const String text, int64 pos0) { +#ifdef PLATFORM_POSIX + FILE *fp = fopen(file, "rb"); +#else + FILE *fp = _wfopen(String(file).ToWString(), L"rb"); +#endif + if (fp != NULL) { + int64 pos = 0; + if (pos0 > 0) { + pos = pos0; + if (0 == fseek(fp, long(pos0), SEEK_SET)) + return -2; + } + int i = 0, c; + for (; (c = fgetc(fp)) != EOF; pos++) { + if (c == text[i]) { + ++i; + if (i == text.GetCount()) + return pos - i; + } else { + if (i != 0) + if (0 == fseek(fp, -(i-1), SEEK_CUR)) + return -2; + i = 0; + } + } + fclose(fp); + } else + return -2; + return -1; +} + +bool MatchPathName(const char *name, const Array &cond, const Array &ext) { + for (int i = 0; i < cond.GetCount(); ++i) { + if(!PatternMatch(cond[i], name)) + return false; + } + for (int i = 0; i < ext.GetCount(); ++i) { + if(PatternMatch(ext[i], name)) + return false; + } + return true; +} + +void SearchFile_Each(String dir, const Array &condFiles, const Array &condFolders, + const Array &extFiles, const Array &extFolders, + const String text, Array &files, Array &errorList) { + FindFile ff; + if (ff.Search(AppendFileName(dir, "*"))) { + do { + if(ff.IsFile()) { + String name = AppendFileName(dir, ff.GetName()); + if (MatchPathName(ff.GetName(), condFiles, extFiles)) { + if (text.IsEmpty()) + files.Add(name); + else { + switch(FindStringInFile(name, text)) { + case 1: files.Add(name); + break; + case -1:errorList.Add(AppendFileName(dir, ff.GetName()) + String(": ") + + t_("Impossible to open file")); + break; + } + } + } + } else if(ff.IsDirectory()) { + String folder = ff.GetName(); + if (folder != "." && folder != "..") { + String name = AppendFileName(dir, folder); + if (MatchPathName(name, condFolders, extFolders)) + SearchFile_Each(name, condFiles, condFolders, extFiles, extFolders, text, files, errorList); + } + } + } while (ff.Next()); + } +} + +Array SearchFile(String dir, const Array &condFiles, const Array &condFolders, + const Array &extFiles, const Array &extFolders, + const String &text, Array &errorList) { + Array files; + //errorList.Clear(); + + SearchFile_Each(dir, condFiles, condFolders, extFiles, extFolders, text, files, errorList); + + + return files; +} + +Array SearchFile(String dir, String condFile, String text, Array &errorList) +{ + Array condFiles, condFolders, extFiles, extFolders, files; + //errorList.Clear(); + + condFiles.Add(condFile); + SearchFile_Each(dir, condFiles, condFolders, extFiles, extFolders, text, files, errorList); + + return files; +} + +Array SearchFile(String dir, String condFile, String text) +{ + Array errorList; + Array condFiles, condFolders, extFiles, extFolders, files; + + condFiles.Add(condFile); + SearchFile_Each(dir, condFiles, condFolders, extFiles, extFolders, text, files, errorList); + + return files; +} + +bool fileDataSortAscending; +char fileDataSortBy; + +FileDataArray::FileDataArray(bool use, int _fileFlags) +{ + Clear(); + fileDataSortAscending = true; + fileDataSortBy = 'n'; + useId = use; + fileFlags = _fileFlags; +} + +bool FileDataArray::Init(String folder, FileDataArray &orig, FileDiffArray &diff) +{ + basePath = orig.basePath; + fileCount = orig.fileCount; + folderCount = orig.folderCount; + fileSize = orig.fileSize; + useId = orig.useId; + fileList.SetCount(orig.GetCount()); + for (int i = 0; i < orig.GetCount(); ++i) + fileList[i] = orig[i]; + + for (int i = 0; i < diff.GetCount(); ++i) { + long id; + if (diff[i].action != 'n') { + id = Find(diff[i].relPath, diff[i].fileName, diff[i].isFolder); + if (id < 0) + return false; + } + switch(diff[i].action) { + case 'u': + fileList[id].id = diff[i].idMaster; + fileList[id].length = diff[i].lengthMaster; + fileList[id].t = diff[i].tMaster; + break; + case 'n': + fileList.Add(FileData(diff[i].isFolder, diff[i].fileName, diff[i].relPath, diff[i].lengthMaster, diff[i].tMaster, diff[i].idMaster)); + if (diff[i].isFolder) + folderCount++; + else + fileCount++; + break; + case 'd': + fileList.Remove(id); + if (diff[i].isFolder) + folderCount--; + else + fileCount--; + break; + break; + case 'p': + SetLastError(t_("Problem found")); // To Fix + //return false; + } + } + return true; +} + +void FileDataArray::Clear() +{ + fileList.Clear(); + errorList.Clear(); + fileCount = folderCount = 0; + fileSize = 0; + basePath = ""; +} + +bool FileDataArray::Search(String dir, String condFile, bool recurse, String text) +{ + Clear(); + if (fileFlags & BROWSE_LINKS) { + if (IsSymLink(dir)) + dir = basePath = GetSymLinkPath(dir); + else + basePath = dir; + } else + basePath = dir; + Search_Each(dir, condFile, recurse, text); + return errorList.IsEmpty(); +} + +void FileDataArray::Search_Each(String dir, String condFile, bool recurse, String text) +{ + FindFile ff; + if (dir == "C:\\Desarrollo\\Packages\\ffmpeg_source\\tests\\ref\\vsynth2\\rgb") + int kk = 1; + if (ff.Search(AppendFileName(dir, condFile))) { + do { + if(ff.IsFile()) { + String p = AppendFileName(dir, ff.GetName()); + //if (ff.IsSymLink()) { + // p = p; + //} + /* + fileList.Add(FileData(true, ff.GetName(), GetRelativePath(dir), 0, ff.GetLastWriteTime(), 0)); + folderCount++; + if (recurse) + Search_Each(p, condFile, recurse, text); + } else */ if (text.IsEmpty()) { + uint64 len = ff.GetLength(); + fileList.Add(FileData(false, ff.GetName(), GetRelativePath(dir), len, ff.GetLastWriteTime(), + (useId && len > 0) ? GetFileId(p) : 0)); + fileCount++; + fileSize += len; + } else { + FILE *fp = fopen(p, "r"); + if (fp != NULL) { + int i = 0, c; + while ((c = fgetc(fp)) != EOF) { + if (c == text[i]) { + ++i; + if (i == text.GetCount()) { + uint64 len = ff.GetLength(); + fileList.Add(FileData(false, ff.GetName(), GetRelativePath(dir), len, ff.GetLastWriteTime(), useId ? GetFileId(p) : 0)); + fileCount++; + fileSize += len; + break; + } + } else { + if (i != 0) + fseek(fp, -(i-1), SEEK_CUR); + i = 0; + } + } + fclose(fp); + } else + errorList.Add(AppendFileName(dir, ff.GetName()) + String(": ") + t_("Impossible to open file")); + } + } + } while (ff.Next()); + } + ff.Search(AppendFileName(dir, "*")); + do { + String name = ff.GetName(); + if(ff.IsDirectory() && name != "." && name != "..") { + String p = AppendFileName(dir, name); + fileList.Add(FileData(true, name, GetRelativePath(dir), 0, ff.GetLastWriteTime(), 0)); + folderCount++; + if (recurse) + Search_Each(p, condFile, recurse, text); + } + } while (ff.Next()); +} + +int64 FileDataArray::GetFileId(String fileName) +{ + int64 id = -1; +#ifdef PLATFORM_POSIX + FILE *fp = fopen(fileName, "rb"); +#else + FILE *fp = _wfopen(fileName.ToWString(), L"rb"); +#endif + if (fp != NULL) { + int c; + long i = 0; + while ((c = fgetc(fp)) != EOF) { + id += c*i; + i++; + } + fclose(fp); + } + return id; +} + +void FileDataArray::SortByName(bool ascending) +{ + fileDataSortBy = 'n'; + fileDataSortAscending = ascending; + Sort(fileList); +} +void FileDataArray::SortByDate(bool ascending) +{ + fileDataSortBy = 'd'; + fileDataSortAscending = ascending; + Sort(fileList); +} +void FileDataArray::SortBySize(bool ascending) +{ + fileDataSortBy = 's'; + fileDataSortAscending = ascending; + Sort(fileList); +} + +bool operator<(const FileData& a, const FileData& b) +{ + if ((a.isFolder && b.isFolder) || (!a.isFolder && !b.isFolder)) { + switch (fileDataSortBy) { + case 'n': { + bool ais = IsDigit(a.fileName[0]); + bool bis = IsDigit(b.fileName[0]); + if (ais && bis) + return atoi(a.fileName) < atoi(b.fileName); + if (ais) + return true; + if (bis) + return false; + } +#ifdef PLATFORM_POSIX + return (a.fileName < b.fileName)&fileDataSortAscending; +#else + return (ToLower(a.fileName) < ToLower(b.fileName))&fileDataSortAscending; +#endif + case 'd': return (a.t < b.t)&fileDataSortAscending; + default: return (a.length < b.length)&fileDataSortAscending; + } + } else + return a.isFolder; +} + +bool CheckFileData(FileData &data, String &relFileName, String &fileName, String &lowrelFileName, String &lowfileName, bool isFolder) { + if (data.isFolder == isFolder) { + if (ToLower(data.fileName) == lowfileName) { + if (ToLower(data.relFilename) == lowrelFileName) + return true; + } + } + return false; +} + +int FileDataArray::Find(String &relFileName, String &fileName, bool isFolder) { + String lowrelFileName = ToLower(relFileName); + String lowfileName = ToLower(fileName); + for (int i = 0; i < fileList.GetCount(); ++i) { + if (CheckFileData(fileList[i], relFileName, fileName, lowrelFileName, lowfileName, isFolder)) + return i; + } + return -1; +} + +/* +int FileDataArray::Find(FileDataArray &data, int id) { + return Find(data[id].relFilename, data[id].fileName, data[id].isFolder); +} +*/ + +int FileDataArray::Find(FileDataArray &data, int id) { + String lowrelFileName = ToLower(data[id].relFilename); + String lowfileName = ToLower(data[id].fileName); + bool isFolder = data[id].isFolder; + + int num = fileList.GetCount(); + if (num == 0) + return -1; + if (num == 1) { + if (CheckFileData(fileList[0], data[id].relFilename, data[id].fileName, lowrelFileName, lowfileName, isFolder)) + return 0; + else + return -1; + } + int down, up; + down = id < num-1 ? id : num-2; + up = down + 1; + while (down >= 0 || up < num) { + if (down >= 0) { + if (CheckFileData(fileList[down], data[id].relFilename, data[id].fileName, lowrelFileName, lowfileName, isFolder)) + return down; + down--; + } + if (up < num) { + if (CheckFileData(fileList[up], data[id].relFilename, data[id].fileName, lowrelFileName, lowfileName, isFolder)) + return up; + up++; + } + } + return -1; +} + +String FileDataArray::GetFileText() { + String ret; + + for (int i = 0; i < fileList.GetCount(); ++i) { + ret << fileList[i].relFilename << "; "; + ret << fileList[i].fileName << "; "; + ret << fileList[i].isFolder << "; "; + ret << fileList[i].length << "; "; + ret << fileList[i].t << "; "; + ret << fileList[i].id << "; "; + ret << "\n"; + } + return ret; +} + +bool FileDataArray::SaveFile(const char *fileName) { + return Upp::SaveFile(fileName, GetFileText()); +} + +bool FileDataArray::AppendFile(const char *fileName) { + return Upp::AppendFile(fileName, GetFileText()); +} + +bool FileDataArray::LoadFile(const char *fileName) +{ + Clear(); + StringParse in = Upp::LoadFile(fileName); + + if (in == "") + return false; + + int numData = in.Count("\n"); + fileList.SetCount(numData); + for (int row = 0; row < numData; ++row) { + fileList[row].relFilename = in.GetText(";"); + fileList[row].fileName = in.GetText(";"); + fileList[row].isFolder = in.GetText(";") == "true" ? true : false; + if (fileList[row].isFolder) + folderCount++; + else + fileCount++; + fileList[row].length = in.GetUInt64(";"); + struct Upp::Time t; + StrToTime(t, in.GetText(";")); + fileList[row].t = t; + fileList[row].id = in.GetUInt64(";"); + } + return true; +} + +String FileDataArray::GetRelativePath(const String &fullPath) { + if (basePath != fullPath.Left(basePath.GetCount())) + return ""; + return fullPath.Mid(basePath.GetCount()); +} + +int64 GetDirectoryLength(const char *directoryName) { + FileDataArray files; + files.Search(directoryName, "*.*", true); + return files.GetSize(); +} + +int64 GetLength(const char *fileName) { + if (FileExists(fileName)) + return GetFileLength(fileName); + else + return GetDirectoryLength(fileName); +} + +FileDiffArray::FileDiffArray() { + Clear(); +} + +void FileDiffArray::Clear() +{ + diffList.Clear(); +} + +// True if equal +bool FileDiffArray::Compare(FileDataArray &master, FileDataArray &secondary, const String folderFrom, + Array &excepFolders, Array &excepFiles, int sensSecs) { + if (master.GetCount() == 0) { + if (secondary.GetCount() == 0) + return true; + else + return false; + } else if (secondary.GetCount() == 0) + return false; + + bool equal = true; + diffList.Clear(); + Array secReviewed; + secReviewed.SetCount(secondary.GetCount(), false); + + for (int i = 0; i < master.GetCount(); ++i) { + bool cont = true; + if (master[i].isFolder) { + String fullfolder = AppendFileName(AppendFileName(folderFrom, master[i].relFilename), master[i].fileName); + for (int iex = 0; iex < excepFolders.GetCount(); ++iex) + if (PatternMatch(excepFolders[iex] + "*", fullfolder)) {// Subfolders included + cont = false; + break; + } + } else { + String fullfolder = AppendFileName(folderFrom, master[i].relFilename); + for (int iex = 0; iex < excepFolders.GetCount(); ++iex) + if (PatternMatch(excepFolders[iex] + "*", fullfolder)) { + cont = false; + break; + } + for (int iex = 0; iex < excepFiles.GetCount(); ++iex) + if (PatternMatch(excepFiles[iex], master[i].fileName)) { + cont = false; + break; + } + } + if (cont) { + int idSec = secondary.Find(master, i); + if (idSec >= 0) { + bool useId = master.UseId() && secondary.UseId(); + secReviewed[idSec] = true; + if (master[i].isFolder) + ; + else if ((useId && (master[i].id == secondary[idSec].id)) || + (!useId && (master[i].length == secondary[idSec].length) && + (abs(master[i].t - secondary[idSec].t) <= sensSecs))) + ; + else { + equal = false; + FileDiff &f = diffList.Add(); + bool isf = f.isFolder = master[i].isFolder; + f.relPath = master[i].relFilename; + String name = f.fileName = master[i].fileName; + f.idMaster = master[i].id; + f.idSecondary = secondary[idSec].id; + f.tMaster = master[i].t; + f.tSecondary = secondary[idSec].t; + f.lengthMaster = master[i].length; + f.lengthSecondary = secondary[idSec].length; + if (master[i].t > secondary[idSec].t) + f.action = 'u'; + else + f.action = 'p'; + } + } else { + equal = false; + FileDiff &f = diffList.Add(); + f.isFolder = master[i].isFolder; + f.relPath = master[i].relFilename; + f.fileName = master[i].fileName; + f.idMaster = master[i].id; + f.idSecondary = 0; + f.tMaster = master[i].t; + f.tSecondary = Null; + f.lengthMaster = master[i].length; + f.lengthSecondary = 0; + f.action = 'n'; + } + } + } + for (int i = 0; i < secReviewed.GetCount(); ++i) { + if (!secReviewed[i]) { + bool cont = true; + if (secondary[i].isFolder) { + String fullfolder = AppendFileName(AppendFileName(folderFrom, secondary[i].relFilename), secondary[i].fileName); + for (int iex = 0; iex < excepFolders.GetCount(); ++iex) + if (PatternMatch(excepFolders[iex] + "*", fullfolder)) { + cont = false; + break; + } + } else { + String fullfolder = AppendFileName(folderFrom, secondary[i].relFilename); + for (int iex = 0; iex < excepFolders.GetCount(); ++iex) + if (PatternMatch(excepFolders[iex] + "*", fullfolder)) { + cont = false; + break; + } + for (int iex = 0; iex < excepFiles.GetCount(); ++iex) + if (PatternMatch(excepFiles[iex], secondary[i].fileName)) { + cont = false; + break; + } + } + if (cont) { + equal = false; + FileDiff &f = diffList.Add(); + f.isFolder = secondary[i].isFolder; + f.relPath = secondary[i].relFilename; + f.fileName = secondary[i].fileName; + f.idMaster = 0; + f.idSecondary = secondary[i].id; + f.tMaster = Null; + f.tSecondary = secondary[i].t; + f.lengthMaster = 0; + f.lengthSecondary = secondary[i].length; + f.action = 'd'; + } + } + } + return equal; +} + +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) +String WinLastError() { + LPVOID lpMsgBuf; + String ret; + + FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, ::GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR) &lpMsgBuf, 0, NULL); + ret = (char *)lpMsgBuf; + LocalFree(lpMsgBuf); + return ret; +} +#endif + +bool FileDiffArray::Apply(String toFolder, String fromFolder, int flags) +{ + for (int i = 0; i < diffList.GetCount(); ++i) { + bool ok = true; + String dest = AppendFileName(toFolder, + AppendFileName(diffList[i].relPath, diffList[i].fileName)); + if (diffList[i].action == 'u' || diffList[i].action == 'd') { + if (diffList[i].isFolder) { + if (DirectoryExists(dest)) { + if (!SetReadOnly(dest, false)) + ok = false; + } + } else { + if (FileExists(dest)) { + if (!SetReadOnly(dest, false)) + ok = false; + } + } + } + if (!ok) { + String strError = t_("Not possible to modify ") + dest; + SetLastError(strError); + //return false; + } + + switch (diffList[i].action) { + case 'n': case 'u': + if (diffList[i].isFolder) { + if (!DirectoryExists(dest)) { + ok = DirectoryCreate(dest); //////////////////////////////////////////////////////////////////////////////////////// + } + } else { + if (FileExists(dest)) { + if (!SetReadOnly(dest, false)) + ok = false; + } + if (ok) { + ok = FileCopy(AppendFileName(fromFolder, FormatInt(i)), dest); + diffList[i].tSecondary = diffList[i].tMaster; + } + } + + if (!ok) { + String strError = t_("Not possible to create ") + dest; +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) + strError += ". " + WinLastError(); +#endif + SetLastError(strError); + //return false; + } + break; + case 'd': + if (diffList[i].isFolder) { + if (DirectoryExists(dest)) + ok = DeleteFolderDeep(dest); // Necessary to add the "X" + } else { + if (FileExists(dest)) + ok = FileDeleteX(dest, flags); + } + if (!ok) { + String strError = t_("Not possible to delete") + String(" ") + dest; +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) + strError += ". " + WinLastError(); +#endif + SetLastError(strError); + //return false; + } + break; + case 'p': + SetLastError(t_("There was a problem in the copy")); + //return false; + break; + } + } + return true; +} + +bool FileDiffArray::SaveFile(const char *fileName) +{ + return Upp::SaveFile(fileName, ToString()); +} + +String FileDiffArray::ToString() +{ + String ret; + + for (int i = 0; i < diffList.GetCount(); ++i) { + ret << diffList[i].action << "; "; + ret << diffList[i].isFolder << "; "; + ret << diffList[i].relPath << "; "; + ret << diffList[i].fileName << "; "; + ret << diffList[i].idMaster << "; "; + ret << diffList[i].idSecondary << "; "; + ret << diffList[i].tMaster << "; "; + ret << diffList[i].tSecondary << "; "; + ret << diffList[i].lengthMaster << "; "; + ret << diffList[i].lengthSecondary << "; "; + ret << "\n"; + } + return ret; +} + +bool FileDiffArray::LoadFile(const char *fileName) +{ + Clear(); + StringParse in = Upp::LoadFile(fileName); + + if (in == "") + return false; + + int numData = in.Count("\n"); + diffList.SetCount(numData); + for (int row = 0; row < numData; ++row) { + diffList[row].action = TrimLeft(in.GetText(";"))[0]; + diffList[row].isFolder = in.GetText(";") == "true" ? true : false; + diffList[row].relPath = in.GetText(";"); + diffList[row].fileName = in.GetText(";"); + diffList[row].idMaster = in.GetUInt64(";"); + diffList[row].idSecondary = in.GetUInt64(";"); + struct Upp::Time t; + StrToTime(t, in.GetText(";")); + diffList[row].tMaster = t; + StrToTime(t, in.GetText(";")); + diffList[row].tSecondary = t; + diffList[row].lengthMaster = in.GetUInt64(";"); + diffList[row].lengthSecondary = in.GetUInt64(";"); + } + return true; +} + + +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) +Value GetVARIANT(VARIANT &result) +{ + Value ret; + switch(result.vt) { + case VT_EMPTY: + case VT_NULL: + case VT_BLOB: + break; + case VT_BOOL: + ret = result.boolVal;// ? "true" : "false"; + break; + case VT_I2: + ret = result.iVal; + break; + case VT_I4: + ret = (int64)result.lVal; + break; + case VT_R4: + ret = AsString(result.fltVal); + break; + case VT_R8: + ret = AsString(result.dblVal); + break; + case VT_BSTR: + ret = WideToString(result.bstrVal); + break; + case VT_LPSTR: + //ret = result.pszVal; + ret = "Unknown VT_LPSTR"; + case VT_DATE: + SYSTEMTIME stime; + VariantTimeToSystemTime(result.date, &stime); + { + Time t; + t.day = (Upp::byte)stime.wDay; + t.month = (Upp::byte)stime.wMonth; + t.year = stime.wYear; + t.hour = (Upp::byte)stime.wHour; + t.minute = (Upp::byte)stime.wMinute; + t.second = (Upp::byte)stime.wSecond; + ret = t; + } + break; + case VT_CF: + ret = "(Clipboard format)"; + break; + } + return ret; +} + +String WideToString(LPCWSTR wcs, int len) { + if (len == -1) { + len = WideCharToMultiByte(CP_UTF8, 0, wcs, len, NULL, 0, NULL, NULL); + if (len == 0) + return Null; + } + Buffer w(len); + WideCharToMultiByte(CP_UTF8, 0, wcs, len, w, len, NULL, NULL); + return ~w; +} + +#endif + +#if defined(PLATFORM_WIN32) || defined (PLATFORM_WIN64) + +Dl::Dl() { + hinstLib = 0; +} + +Dl::~Dl() { + if (hinstLib) + if (FreeLibrary(hinstLib) == 0) + throw Exc(t_("Dl cannot be released")); +} + +#ifndef LOAD_IGNORE_CODE_AUTHZ_LEVEL + #define LOAD_IGNORE_CODE_AUTHZ_LEVEL 0x00000010 +#endif + +bool Dl::Load(const String &fileDll) { + if (hinstLib) + if (FreeLibrary(hinstLib) == 0) + return false; + + hinstLib = LoadLibraryEx(TEXT(fileDll), NULL, LOAD_IGNORE_CODE_AUTHZ_LEVEL); + if (!hinstLib) + return false; + return true; +} + +void *Dl::GetFunction(const String &functionName) { + if (!hinstLib) + return NULL; + return (void *)GetProcAddress(hinstLib, functionName); +} + +#else + +#include + +Dl::Dl() { + hinstLib = 0; +} + +Dl::~Dl() { + if (hinstLib) + if (dlclose(hinstLib) == 0) + throw Exc(t_("Dl cannot be released")); +} + +bool Dl::Load(const String &fileDll) { + if (hinstLib) + if (dlclose(hinstLib) == 0) + return false; + + hinstLib = dlopen(fileDll, RTLD_LAZY); + if (!hinstLib) + return false; + return true; +} + +void *Dl::GetFunction(const String &functionName) { + if (!hinstLib) + return NULL; + return dlsym(hinstLib, functionName); +} + +#endif + +Color RandomColor() { + return Color(Random(), 0); +} + +Image GetRect(const Image& orig, const Rect &r) { + if(r.IsEmpty()) + return Image(); + ImageBuffer ib(r.GetSize()); + for(int y = r.top; y < r.bottom; y++) { + const RGBA *s = orig[y] + r.left; + const RGBA *e = orig[y] + r.right; + RGBA *t = ib[y - r.top]; + while(s < e) { + *t = *s; + t++; + s++; + } + } + return ib; +} + END_UPP_NAMESPACE \ No newline at end of file diff --git a/bazaar/Functions4U/Functions4U.h b/bazaar/Functions4U/Functions4U.h index e3807b033..28f668ddd 100644 --- a/bazaar/Functions4U/Functions4U.h +++ b/bazaar/Functions4U/Functions4U.h @@ -1,582 +1,580 @@ -#ifndef _Functions4U_Functions4U_h -#define _Functions4U_Functions4U_h - -#include -#include -#ifdef flagGUI -#include -#include "GatherTpp.h" -#endif - -#include -#include "StaticPlugin.h" - -NAMESPACE_UPP - - -enum EXT_FILE_FLAGS {USE_TRASH_BIN = 1, - BROWSE_LINKS = 2, - DELETE_READ_ONLY = 4, - ASK_BEFORE_DELETE = 8 -}; - -bool LaunchFile(const char *file); - -bool FileCat(const char *file, const char *appendFile); - -int FileCompare(const char *path1, const char *path2); - -Upp::int64 FindStringInFile(const char *file, const String text, Upp::int64 pos0 = 0); - -bool FileStrAppend(const char *file, const char *str); -bool AppendFile(const char *filename, const char *str); - -String AppendFileName(const String& path1, const char *path2, const char *path3); - -inline String Trim(const String& s) {return TrimBoth(s);}; - -String FitFileName(String fileName, int len); - -String Tokenize(const String &str, const String &token, int &pos); - -///////// -bool DirectoryExistsX(const char *path, int flags = 0); -/////////////////////////////// -bool DirectoryDeleteX(const char *path, int flags = 0); -bool DirectoryDeleteDeepX(const char *path, int flags = 0); -bool DeleteFolderDeepX(const char *dir, int flags = 0); -bool DirectoryCopyX(const char *dir, const char *newPlace); -bool DeleteFolderDeepWildcards(const char *dir, int flags = 0); -/////////////////////////////// - -bool UpperFolder(const char *folderName); -String GetUpperFolder(const String &folderName); -String GetNextFolder(const String &folder, const String &lastFolder); -String FileRealName(const char *fileName); - -//bool GetSymLinkPath(const char *linkPath, String &filePath); -bool IsSymLink(const char *path); - -bool CreateFolderDeep(const char *dir); - -///////// -bool FileMoveX(const char *oldpath, const char *newpath, int flags = 0); -bool FileDeleteX(const char *path, int flags = 0); -///////// - - -bool SetReadOnly(const char *path, bool readOnly); -bool ReadOnly(const char *path, bool readOnly) -#if defined(__MINGW32__) - __attribute__ ((deprecated)); -#else - ; -#endif - -bool SetReadOnly(const char *path, bool usr, bool grp, bool oth); -bool ReadOnly(const char *path, bool usr, bool grp, bool oth) -#if defined(__MINGW32__) - __attribute__ ((deprecated)); -#else - ; -#endif -bool IsReadOnly(const char *path, bool &usr, bool &grp, bool &oth); - -String LoadFile_Safe(String fileName); - -Upp::int64 GetLength(const char *fileDirName); -Upp::int64 GetDirectoryLength(const char *directoryName); - -/////////////////////////////// -Upp::Array SearchFile(String dir, const Upp::Array &condFiles, const Upp::Array &condFolders, - const Upp::Array &extFiles, const Upp::Array &extFolders, - const String &text, Upp::Array &errorList); -Upp::Array SearchFile(String dir, String condFile, String text, Upp::Array &errorList);//, int flags = 0); -Upp::Array SearchFile(String dir, String condFile, String text = "");//, int flags = 0); -/////////////////////////////// - -bool FileToTrashBin(const char *path); -Upp::int64 TrashBinGetCount(); -bool TrashBinClear(); - -//String GetDesktopFolder(); -//String GetProgramsFolder(); -//String GetAppDataFolder(); -//String GetMusicFolder(); -//String GetPicturesFolder(); -//String GetVideoFolder(); -String GetPersonalFolder(); -//String GetTemplatesFolder(); -//String GetDownloadFolder(); -String GetRootFolder(); -String GetTempFolder(); -String GetOsFolder(); -String GetSystemFolder(); - - -struct FileData : Moveable { - bool isFolder; - String fileName; - String relFilename; - Upp::int64 length; - struct Upp::Time t; - Upp::int64 id; - - String ToString() const { return Format("%s %0n", fileName, length); } - - FileData(bool isFolder, String fileName, String relFilename, Upp::int64 length, - struct Upp::Time t, Upp::uint64 id) : isFolder(isFolder), fileName(fileName), - relFilename(relFilename), length(length), t(t), id(id) {} - FileData() {} -}; - -struct FileDiff { - char action; // 'n': New, 'u': Update, 'd': Delete, 'p': Problem - bool isFolder; - String relPath; - String fileName; - Upp::uint64 idMaster, idSecondary; - struct Upp::Time tMaster, tSecondary; - Upp::uint64 lengthMaster, lengthSecondary; -}; - -class ErrorHandling -{ -public: - void SetLastError(String _lastError) {lastError = _lastError;}; - String GetLastError() {return lastError;}; - -private: - String lastError; -}; - -class FileDiffArray; - -class FileDataArray : public ErrorHandling -{ -public: - FileDataArray(bool use = false, int fileFlags = 0); - bool Init(String folder, FileDataArray &orig, FileDiffArray &diff); - void Clear(); - bool Search(String dir, String condFile, bool recurse = false, String text = ""); - FileData& operator[](long i) {return fileList[i];} - long GetFileCount() {return fileCount;}; - long GetFolderCount() {return folderCount;}; - long GetCount() {return fileCount + folderCount;}; - Upp::int64 GetSize() {return fileSize;}; - inline bool UseId() {return useId;}; - void SortByName(bool ascending = true); - void SortByDate(bool ascending = true); - void SortBySize(bool ascending = true); - Upp::Array &GetLastError() {return errorList;}; - int Find(String &relFileName, String &fileName, bool isFolder); - int Find(FileDataArray &data, int id); - String FullFileName(int i) {return AppendFileName(basePath, fileList[i].fileName);}; - bool SaveFile(const char *fileName); - bool AppendFile(const char *fileName); - bool LoadFile(const char *fileName); - -private: - void Search_Each(String dir, String condFile, bool recurse, String text); - Upp::int64 GetFileId(String fileName); - String GetRelativePath(const String &fullPath); - String GetFileText(); - - Upp::Array fileList; - Upp::Array errorList; - String basePath; - long fileCount, folderCount; - Upp::int64 fileSize; - bool useId; - int fileFlags; -}; - -class FileDiffArray : public ErrorHandling -{ -public: - FileDiffArray(); - void Clear(); - FileDiff& operator[](long i) {return diffList[i];} - bool Compare(FileDataArray &master, FileDataArray &secondary, const String folderFrom, - Upp::Array &excepFolders, Upp::Array &excepFiles, int sensSecs = 0); - bool Apply(String toFolder, String fromFolder, int flags = 0); - long GetCount() {return diffList.GetCount();}; - bool SaveFile(const char *fileName); - bool LoadFile(const char *fileName); - String ToString(); - -private: - Upp::Array diffList; -}; - -String Replace(String str, String find, String replace); -String Replace(String str, char find, char replace); - -int ReverseFind(const String& s, const String& toFind, int from = 0); - -String FormatLong(long a); - -// const char *StrToTime(struct Upp::Time& d, const char *s); Now included in TimeDate -Time StrToTime(const char *s); -Date StrToDate(const char *s); - -String BytesToString(Upp::uint64 bytes, bool units = true); - -String SecondsToString(double seconds, bool units = false); -String HMSToString(int hour, int min, double seconds, bool units = false); -double StringToSeconds(String str); // The opposite -void StringToHMS(String durat, int &hour, int &min, double &seconds); - -String FormatDoubleAdjust(double d, double range); - -String RemoveAccents(String str); -String RemoveAccent(wchar c); -bool IsPunctuation(wchar c); - -inline double ToRad(double angle) {return angle*M_PI/180.;} -inline double ToDeg(double angle) {return angle*180./M_PI;} - -inline bool Odd(int val) {return val%2;} -inline bool Even(int val) {return !Odd(val);} -inline int RoundEven(int val) {return Even(val) ? val : val+1;} -template -inline int Sign(T a) {return (a > 0) - (a < 0);} -template -inline T Average(T a, T b) {return T(a+b)/2;} -template -inline T Average(T a, T b, T c) {return T(a+b+c)/3;} -template -inline T Average(T a, T b, T c, T d){return T(a+b+c+d)/4;} -template -inline T pow2(T a) {return (a*a);} -template -inline T pow3(T a) {return (a*a*a);} -template -inline T pow4(T a) {return pow2(pow2(a));} -template -inline const T& min(const T& a, const T& b, const T& c) { - return a < b ? (a < c ? a : c) : ((b < c) ? b : c); } -template -inline const T& min(const T& a, const T& b, const T& c, const T& d) { - T ab = min(a, b); - T cd = min(c, d); - return ab < cd ? ab : cd; -} -template -inline const T& max(const T& a, const T& b, const T& c) { - return a > b ? (a > c ? a : c) : ((b > c) ? b : c); } -template -inline const T& max(const T& a, const T& b, const T& c, const T& d) { - T ab = max(a, b); - T cd = max(c, d); - return ab > cd ? ab : cd; -} - -template -inline bool Between(const T& val, const T& min, const T& max) { - return val >= min && val <= max; -} - -template -T AngleAdd360(T ang, T val) { - ang += val; - while (ang >= 360) - ang -= 360; - while (ang < 0) - ang += 360; - return ang; -} - -template -inline const T Distance(const T& x1, const T& y1, const T& x2, const T& y2) { - return sqrt(pow2(x1-x2) + pow2(y1-y2)); } - -template -inline const T Distance(const Point_& p1, const Point_& p2) { - return Distance(p1.x, p1.y, p2.x, p2.y); } - -template -inline const T Distance(const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, const T& z2) { - return sqrt(pow2(x1-x2) + pow2(y1-y2) + pow2(z1-z2)); } - -template -inline const double Angle(const T& x1, const T& y1, const T& x2, const T& y2) { - return atan2(y2-y2, x2-x1); -} - -template -inline const double Angle(const Point_& p1, const Point_& p2) { - return Angle(p1.x, p1.y, p2.x, p2.y); -} - -// A String based class to parse into -class StringParse : public String { -public: - void GoInit() {pos = 0; lastSeparator='\0';}; - StringParse():String("") {GoInit();}; - StringParse(String s): String(s) {GoInit();}; - bool GoBefore(const String text) - { - if (pos >= GetLength()) { - pos = GetLength()-1; - return false; - } - int newpos = String::Find(text, pos); - if (newpos < 0) - return false; // If it does not find it, it does not move - pos = newpos; - return true; - }; - bool GoAfter(const String text) - { - if(!GoBefore(text)) - return false; - pos += strlen(text); - return true; - }; - bool GoAfter(const String text, const String text2) - { - if(!GoAfter(text)) - return false; - if(!GoAfter(text2)) - return false; - return true; - }; - bool GoAfter(const String text, const String text2, const String text3) - { - if(!GoAfter(text)) - return false; - if(!GoAfter(text2)) - return false; - if(!GoAfter(text3)) - return false; - return true; - }; - bool GoAfter_Init(const String text) {GoInit(); return GoAfter(text);}; - bool GoAfter_Init(const String text, const String text2) {GoInit(); return GoAfter(text, text2);}; - bool GoAfter_Init(const String text, const String text2, const String text3) {GoInit(); return GoAfter(text, text2, text3);}; - - void GoBeginLine() - { - for (; pos >= 0; --pos) { - if ((ToString()[pos-1] == '\r') || (ToString()[pos-1] == '\n')) - return; - } - } - bool IsBeginLine() - { - if (pos == 0) - return true; - if ((ToString()[pos-1] == '\r') || (ToString()[pos-1] == '\n')) - return true; - return false; - } - bool IsSpaceRN(int c) - { - if (IsSpace(c)) - return true; - if ((c == '\r') || (c == '\n')) - return true; - return false; - } - // Gets text between "" or just a word until an space - // It considers special characters with \ if between "" - // If not between "" it gets the word when it finds one of the separator characters - String GetText(String separators = "") - { - String ret = ""; - if (pos > GetCount() || pos == -1) - return ret; - int newpos = pos; - - while ((IsSpaceRN(ToString()[newpos]) && (ToString()[newpos] != '\"') && - (ToString()[newpos] != '\0'))) - newpos++; - if (ToString()[newpos] == '\0') { - pos = newpos; - return ""; - } - - if (ToString()[newpos] == '\"') { // Between "" - newpos++; - while (ToString()[newpos] != '\"' && ToString()[newpos] != '\0') { - if (ToString()[newpos] == '\\') { - newpos++; - if (ToString()[newpos] == '\0') - return ""; - } - ret.Cat(ToString()[newpos]); - newpos++; - } - lastSeparator = '"'; - } else if (separators == "") { // Simple word - while (!IsSpaceRN(ToString()[newpos]) && ToString()[newpos] != '\0') { - if (ToString()[newpos] == '\"') { - newpos--; // This " belongs to the next - break; - } - ret.Cat(ToString()[newpos]); - newpos++; - } - lastSeparator = ToString()[newpos]; - } else { // Simple word, special separator - while (ToString()[newpos] != '\0') {// Only consider included spaces (!IsSpaceRN(ToString()[newpos]) && ToString()[newpos] != '\0') { - if (ToString()[newpos] == '\"') { - newpos--; // This " belongs to the next - break; - } - if (separators.Find(ToString()[newpos]) >= 0) { - lastSeparator = ToString()[newpos]; - break; - } - ret.Cat(ToString()[newpos]); - newpos++; - } - lastSeparator = ToString()[newpos]; - } - pos = ++newpos; // After the separator: ", space or separator - return ret; - } - String GetLine() - { - return GetText("\r\n"); - } - double GetDouble(String separators = "") {return atof(GetText(separators));}; - int GetInt(String separators = "") {return atoi(GetText(separators));}; - long GetLong(String separators = "") {return atol(GetText(separators));}; - Upp::uint64 GetUInt64(String separators = "") -#if defined(PLATFORM_WIN32) - {return _atoi64(GetText(separators));}; -#endif -#ifdef PLATFORM_POSIX - {return atoll(GetText(separators));}; -#endif - - String Right() {return String::Mid(pos+1);} - int GetLastSeparator() {return lastSeparator;} - void MoveRel(int val) - { - pos += val; - if (pos < 0) - pos = 0; - else if (pos >= GetCount()) - pos = GetCount() - 1; - } - int GetPos() {return pos;}; - bool SetPos(int i) - { - if (i < 0 || i >= GetCount()) - return false; - else { - pos = i; - return true; - } - } - bool Eof() - { - return pos >= GetCount(); - } - unsigned Count(String s) - { - int from = 0; - unsigned count = 0; - - while ((from = ToString().Find(s, from)) >= 0) { - count++; - from++; - } - return count; - } -private: - int pos; - int lastSeparator; -}; - -#if defined(PLATFORM_WIN32) -Value GetVARIANT(VARIANT &result); -String WideToString(LPCWSTR wcs, int len = -1); -#endif - -#ifdef CTRLLIB_H - #include "Functions4U/Functions4U_Gui.h" -#endif - -String GetExtExecutable(String ext); - -Upp::Array GetDriveList(); - -// Replaced by GetCurrentDirectory() and SetCurrentDirectory() -// String Getcwd(); -// bool Chdir (const String &folder); - -//String Format(Time time, const char*fmt = "%2d:%2d"); - -class Dl { -public: - Dl(); - ~Dl(); - bool Load(const String &fileDll); - void *GetFunction(const String &functionName); - -private: -#if defined(PLATFORM_WIN32) - HINSTANCE hinstLib; -#else - void *hinstLib; -#endif -}; - -typedef Dl Dll; - -//bool RunFromMemory(const String &progBuffer, const String &name); - - -String BsGetLastError(); -bool BSPatch(String oldfile, String newfile, String patchfile); -bool BSDiff(String oldfile, String newfile, String patchfile); - - -template -Rect_ FitInFrame(const Size_ &frame, const Size_ &object) -{ - double frameAspect = frame.cx/(double)frame.cy; - double objectAspect = object.cx/(double)object.cy; - - if (frameAspect > objectAspect) { - double x = (frame.cx - objectAspect*frame.cy)/2.; - return Rect_((T)x, 0, (T)(x + objectAspect*frame.cy), frame.cy); - } else { - double y = (frame.cy - frame.cx/objectAspect)/2.; - return Rect_(0, (T)y, frame.cx, (T)(y + frame.cx/objectAspect)); - } -} - -Color RandomColor(); - -Image GetRect(const Image& orig, const Rect &r); - -class _NRFuse { -public: - _NRFuse(bool *_inside) {inside = _inside; failed = true;} - ~_NRFuse() {if (!failed) *inside = false;} - bool failed; -private: - bool *inside; -}; - -#define NON_REENTRANT_V static bool _insideNR; _NRFuse _fuseNR(&_insideNR); \ - if(!_insideNR) { \ - _insideNR = true; \ - _fuseNR.failed = false; \ - } else \ - return -#define NON_REENTRANT(v) static bool _insideNR; _NRFuse _fuseNR(&_insideNR); \ - if(!_insideNR) { \ - _insideNR = true; \ - _fuseNR.failed = false; \ - } else \ - return v - -END_UPP_NAMESPACE - -#endif +#ifndef _Functions4U_Functions4U_h +#define _Functions4U_Functions4U_h + +#include +#include +#ifdef flagGUI +#include +#include +#include "GatherTpp.h" +#endif + +#include +#include "StaticPlugin.h" + +NAMESPACE_UPP + + +enum EXT_FILE_FLAGS {USE_TRASH_BIN = 1, + BROWSE_LINKS = 2, + DELETE_READ_ONLY = 4, + ASK_BEFORE_DELETE = 8 +}; + +bool LaunchFile(const char *file); + +bool FileCat(const char *file, const char *appendFile); + +int FileCompare(const char *path1, const char *path2); + +Upp::int64 FindStringInFile(const char *file, const String text, Upp::int64 pos0 = 0); + +bool FileStrAppend(const char *file, const char *str); +bool AppendFile(const char *filename, const char *str); + +String AppendFileName(const String& path1, const char *path2, const char *path3); + +inline String Trim(const String& s) {return TrimBoth(s);}; + +String FitFileName(String fileName, int len); + +String Tokenize(const String &str, const String &token, int &pos); +String Tokenize(const String &str, const String &token); + +///////// +bool DirectoryExistsX(const char *path, int flags = 0); +/////////////////////////////// +bool DirectoryDeleteX(const char *path, int flags = 0); +bool DirectoryDeleteDeepX(const char *path, int flags = 0); +bool DeleteFolderDeepX(const char *dir, int flags = 0); +bool DirectoryCopyX(const char *dir, const char *newPlace); +bool DeleteFolderDeepWildcards(const char *dir, int flags = 0); +/////////////////////////////// +bool RenameFolderDeepWildcards(const char *path, const char *namewc, const char *newname); + +bool UpperFolder(const char *folderName); +String GetUpperFolder(const String &folderName); +String GetNextFolder(const String &folder, const String &lastFolder); +String FileRealName(const char *fileName); + +//bool GetSymLinkPath(const char *linkPath, String &filePath); +bool IsSymLink(const char *path); + +bool CreateFolderDeep(const char *dir); + +///////// +bool FileMoveX(const char *oldpath, const char *newpath, int flags = 0); +bool FileDeleteX(const char *path, int flags = 0); +///////// + + +bool SetReadOnly(const char *path, bool readOnly); +bool ReadOnly(const char *path, bool readOnly) +#if defined(__MINGW32__) + __attribute__ ((deprecated)); +#else + ; +#endif + +bool SetReadOnly(const char *path, bool usr, bool grp, bool oth); +bool ReadOnly(const char *path, bool usr, bool grp, bool oth) +#if defined(__MINGW32__) + __attribute__ ((deprecated)); +#else + ; +#endif +bool IsReadOnly(const char *path, bool &usr, bool &grp, bool &oth); + +String LoadFile_Safe(String fileName); + +Upp::int64 GetLength(const char *fileDirName); +Upp::int64 GetDirectoryLength(const char *directoryName); + +/////////////////////////////// +Upp::Array SearchFile(String dir, const Upp::Array &condFiles, const Upp::Array &condFolders, + const Upp::Array &extFiles, const Upp::Array &extFolders, + const String &text, Upp::Array &errorList); +Upp::Array SearchFile(String dir, String condFile, String text, Upp::Array &errorList);//, int flags = 0); +Upp::Array SearchFile(String dir, String condFile, String text = "");//, int flags = 0); +/////////////////////////////// + +bool FileToTrashBin(const char *path); +Upp::int64 TrashBinGetCount(); +bool TrashBinClear(); + +//String GetDesktopFolder(); +//String GetProgramsFolder(); +//String GetAppDataFolder(); +//String GetMusicFolder(); +//String GetPicturesFolder(); +//String GetVideoFolder(); +String GetPersonalFolder(); +//String GetTemplatesFolder(); +//String GetDownloadFolder(); +String GetRootFolder(); +String GetTempFolder(); +String GetOsFolder(); +String GetSystemFolder(); +bool SetEnv(const char *id, const char *val); + +struct FileData : Moveable { + bool isFolder; + String fileName; + String relFilename; + Upp::int64 length; + struct Upp::Time t; + Upp::int64 id; + + String ToString() const { return Format("%s %0n", fileName, length); } + + FileData(bool isFolder, String fileName, String relFilename, Upp::int64 length, + struct Upp::Time t, Upp::uint64 id) : isFolder(isFolder), fileName(fileName), + relFilename(relFilename), length(length), t(t), id(id) {} + FileData() {} +}; + +struct FileDiff { + char action; // 'n': New, 'u': Update, 'd': Delete, 'p': Problem + bool isFolder; + String relPath; + String fileName; + Upp::uint64 idMaster, idSecondary; + struct Upp::Time tMaster, tSecondary; + Upp::uint64 lengthMaster, lengthSecondary; +}; + +class ErrorHandling +{ +public: + void SetLastError(String _lastError) {lastError = _lastError;}; + String GetLastError() {return lastError;}; + +private: + String lastError; +}; + +class FileDiffArray; + +class FileDataArray : public ErrorHandling +{ +public: + FileDataArray(bool use = false, int fileFlags = 0); + bool Init(String folder, FileDataArray &orig, FileDiffArray &diff); + void Clear(); + bool Search(String dir, String condFile, bool recurse = false, String text = ""); + FileData& operator[](long i) {return fileList[i];} + long GetFileCount() {return fileCount;}; + long GetFolderCount() {return folderCount;}; + long GetCount() {return fileCount + folderCount;}; + Upp::int64 GetSize() {return fileSize;}; + inline bool UseId() {return useId;}; + void SortByName(bool ascending = true); + void SortByDate(bool ascending = true); + void SortBySize(bool ascending = true); + Upp::Array &GetLastError() {return errorList;}; + int Find(String &relFileName, String &fileName, bool isFolder); + int Find(FileDataArray &data, int id); + String FullFileName(int i) {return AppendFileName(basePath, fileList[i].fileName);}; + bool SaveFile(const char *fileName); + bool AppendFile(const char *fileName); + bool LoadFile(const char *fileName); + +private: + void Search_Each(String dir, String condFile, bool recurse, String text); + Upp::int64 GetFileId(String fileName); + String GetRelativePath(const String &fullPath); + String GetFileText(); + + Upp::Array fileList; + Upp::Array errorList; + String basePath; + long fileCount, folderCount; + Upp::int64 fileSize; + bool useId; + int fileFlags; +}; + +class FileDiffArray : public ErrorHandling +{ +public: + FileDiffArray(); + void Clear(); + FileDiff& operator[](long i) {return diffList[i];} + bool Compare(FileDataArray &master, FileDataArray &secondary, const String folderFrom, + Upp::Array &excepFolders, Upp::Array &excepFiles, int sensSecs = 0); + bool Apply(String toFolder, String fromFolder, int flags = 0); + long GetCount() {return diffList.GetCount();}; + bool SaveFile(const char *fileName); + bool LoadFile(const char *fileName); + String ToString(); + +private: + Upp::Array diffList; +}; + +String Replace(String str, String find, String replace); +String Replace(String str, char find, char replace); + +int ReverseFind(const String& s, const String& toFind, int from = 0); + +String FormatLong(long a); + +// const char *StrToTime(struct Upp::Time& d, const char *s); Now included in TimeDate +Time StrToTime(const char *s); +Date StrToDate(const char *s); + +String BytesToString(Upp::uint64 bytes, bool units = true); + +String SecondsToString(double seconds, bool units = false, bool dec = true); +String HMSToString(int hour, int min, double seconds, bool units = false, bool dec = true); +double StringToSeconds(String str); // The opposite +void StringToHMS(String durat, int &hour, int &min, double &seconds); + +String FormatDoubleAdjust(double d, double range); + +String RemoveAccents(String str); +String RemoveAccent(wchar c); +bool IsPunctuation(wchar c); +String RemovePunctuation(String str); + +inline double ToRad(double angle) {return angle*M_PI/180.;} +inline double ToDeg(double angle) {return angle*180./M_PI;} + +inline bool Odd(int val) {return val%2;} +inline bool Even(int val) {return !Odd(val);} +inline int RoundEven(int val) {return Even(val) ? val : val+1;} +template +inline int Sign(T a) {return (a > 0) - (a < 0);} +template +inline T Average(T a, T b) {return T(a+b)/2;} +template +inline T Average(T a, T b, T c) {return T(a+b+c)/3;} +template +inline T Average(T a, T b, T c, T d){return T(a+b+c+d)/4;} +template +inline T pow2(T a) {return (a*a);} +template +inline T pow3(T a) {return (a*a*a);} +template +inline T pow4(T a) {return pow2(pow2(a));} +template +inline const T& min(const T& a, const T& b, const T& c) { + return a < b ? (a < c ? a : c) : ((b < c) ? b : c); } +template +inline const T& min(const T& a, const T& b, const T& c, const T& d) { + T ab = min(a, b); + T cd = min(c, d); + return ab < cd ? ab : cd; +} +template +inline const T& max(const T& a, const T& b, const T& c) { + return a > b ? (a > c ? a : c) : ((b > c) ? b : c); } +template +inline const T& max(const T& a, const T& b, const T& c, const T& d) { + T ab = max(a, b); + T cd = max(c, d); + return ab > cd ? ab : cd; +} + +template +inline bool Between(const T& val, const T& min, const T& max) { + return val >= min && val <= max; +} + +template +T AngleAdd360(T ang, T val) { + ang += val; + while (ang >= 360) + ang -= 360; + while (ang < 0) + ang += 360; + return ang; +} + +template +inline const T Distance(const T& x1, const T& y1, const T& x2, const T& y2) { + return sqrt(pow2(x1-x2) + pow2(y1-y2)); } + +template +inline const T Distance(const Point_& p1, const Point_& p2) { + return Distance(p1.x, p1.y, p2.x, p2.y); } + +template +inline const T Distance(const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, const T& z2) { + return sqrt(pow2(x1-x2) + pow2(y1-y2) + pow2(z1-z2)); } + +template +inline const double Angle(const T& x1, const T& y1, const T& x2, const T& y2) { + return atan2(y2-y2, x2-x1); +} + +template +inline const double Angle(const Point_& p1, const Point_& p2) { + return Angle(p1.x, p1.y, p2.x, p2.y); +} + + +Vector > ReadCSV(const String strFile, char separator = ',', bool removeRepeated = true); + +// A String based class to parse into +class StringParse : public String { +public: + void GoInit() {pos = 0; lastSeparator='\0';}; + StringParse():String("") {GoInit();}; + StringParse(String s): String(s) {GoInit();}; + bool GoBefore(const String text) { + if (pos >= GetLength()) { + pos = GetLength()-1; + return false; + } + int newpos = String::Find(text, pos); + if (newpos < 0) + return false; // If it does not find it, it does not move + pos = newpos; + return true; + }; + bool GoAfter(const String text) { + if(!GoBefore(text)) + return false; + pos += strlen(text); + return true; + }; + bool GoAfter(const String text, const String text2) { + if(!GoAfter(text)) + return false; + if(!GoAfter(text2)) + return false; + return true; + }; + bool GoAfter(const String text, const String text2, const String text3) { + if(!GoAfter(text)) + return false; + if(!GoAfter(text2)) + return false; + if(!GoAfter(text3)) + return false; + return true; + }; + bool GoAfter_Init(const String text) {GoInit(); return GoAfter(text);}; + bool GoAfter_Init(const String text, const String text2) {GoInit(); return GoAfter(text, text2);}; + bool GoAfter_Init(const String text, const String text2, const String text3) {GoInit(); return GoAfter(text, text2, text3);}; + + void GoBeginLine() { + for (; pos >= 0; --pos) { + if ((ToString()[pos-1] == '\r') || (ToString()[pos-1] == '\n')) + return; + } + } + bool IsBeginLine() { + if (pos == 0) + return true; + if ((ToString()[pos-1] == '\r') || (ToString()[pos-1] == '\n')) + return true; + return false; + } + bool IsSpaceRN(int c) { + if (IsSpace(c)) + return true; + if ((c == '\r') || (c == '\n')) + return true; + return false; + } + // Gets text between "" or just a word until an space + // It considers special characters with \ if between "" + // If not between "" it gets the word when it finds one of the separator characters + String GetText(String separators = "") { + String ret = ""; + if (pos > GetCount() || pos == -1) + return ret; + int newpos = pos; + + while ((IsSpaceRN(ToString()[newpos]) && (ToString()[newpos] != '\"') && + (ToString()[newpos] != '\0'))) + newpos++; + if (ToString()[newpos] == '\0') { + pos = newpos; + return ""; + } + + if (ToString()[newpos] == '\"') { // Between "" + newpos++; + while (ToString()[newpos] != '\"' && ToString()[newpos] != '\0') { + if (ToString()[newpos] == '\\') { + newpos++; + if (ToString()[newpos] == '\0') + return ""; + } + ret.Cat(ToString()[newpos]); + newpos++; + } + lastSeparator = '"'; + } else if (separators == "") { // Simple word + while (!IsSpaceRN(ToString()[newpos]) && ToString()[newpos] != '\0') { + if (ToString()[newpos] == '\"') { + newpos--; // This " belongs to the next + break; + } + ret.Cat(ToString()[newpos]); + newpos++; + } + lastSeparator = ToString()[newpos]; + } else { // Simple word, special separator + while (ToString()[newpos] != '\0') {// Only consider included spaces (!IsSpaceRN(ToString()[newpos]) && ToString()[newpos] != '\0') { + if (ToString()[newpos] == '\"') { + newpos--; // This " belongs to the next + break; + } + if (separators.Find(ToString()[newpos]) >= 0) { + lastSeparator = ToString()[newpos]; + break; + } + ret.Cat(ToString()[newpos]); + newpos++; + } + lastSeparator = ToString()[newpos]; + } + pos = ++newpos; // After the separator: ", space or separator + return ret; + } + String GetLine() { + return GetText("\r\n"); + } + double GetDouble(String separators = "") {return atof(GetText(separators));}; + int GetInt(String separators = "") {return atoi(GetText(separators));}; + long GetLong(String separators = "") {return atol(GetText(separators));}; + Upp::uint64 GetUInt64(String separators = "") +#if defined(PLATFORM_WIN32) + {return _atoi64(GetText(separators));}; +#endif +#ifdef PLATFORM_POSIX + {return atoll(GetText(separators));}; +#endif + + String Right() {return String::Mid(pos+1);} + int GetLastSeparator() {return lastSeparator;} + void MoveRel(int val) + { + pos += val; + if (pos < 0) + pos = 0; + else if (pos >= GetCount()) + pos = GetCount() - 1; + } + int GetPos() {return pos;}; + bool SetPos(int i) + { + if (i < 0 || i >= GetCount()) + return false; + else { + pos = i; + return true; + } + } + bool Eof() + { + return pos >= GetCount(); + } + unsigned Count(String s) + { + int from = 0; + unsigned count = 0; + + while ((from = ToString().Find(s, from)) >= 0) { + count++; + from++; + } + return count; + } +private: + int pos; + int lastSeparator; +}; + +#if defined(PLATFORM_WIN32) +Value GetVARIANT(VARIANT &result); +String WideToString(LPCWSTR wcs, int len = -1); +#endif + +#ifdef CTRLLIB_H + #include "Functions4U/Functions4U_Gui.h" +#endif + +String GetExtExecutable(String ext); + +Upp::Array GetDriveList(); + +// Replaced by GetCurrentDirectory() and SetCurrentDirectory() +// String Getcwd(); +// bool Chdir (const String &folder); + +//String Format(Time time, const char*fmt = "%2d:%2d"); + +class Dl { +public: + Dl(); + ~Dl(); + bool Load(const String &fileDll); + void *GetFunction(const String &functionName); + +private: +#if defined(PLATFORM_WIN32) + HINSTANCE hinstLib; +#else + void *hinstLib; +#endif +}; + +typedef Dl Dll; + +//bool RunFromMemory(const String &progBuffer, const String &name); + + +String BsGetLastError(); +bool BSPatch(String oldfile, String newfile, String patchfile); +bool BSDiff(String oldfile, String newfile, String patchfile); + + +template +Rect_ FitInFrame(const Size_ &frame, const Size_ &object) +{ + double frameAspect = frame.cx/(double)frame.cy; + double objectAspect = object.cx/(double)object.cy; + + if (frameAspect > objectAspect) { + double x = (frame.cx - objectAspect*frame.cy)/2.; + return Rect_((T)x, 0, (T)(x + objectAspect*frame.cy), frame.cy); + } else { + double y = (frame.cy - frame.cx/objectAspect)/2.; + return Rect_(0, (T)y, frame.cx, (T)(y + frame.cx/objectAspect)); + } +} + +Color RandomColor(); + +Image GetRect(const Image& orig, const Rect &r); + +class _NRFuse { +public: + _NRFuse(bool *_inside) {inside = _inside; failed = true;} + ~_NRFuse() {if (!failed) *inside = false;} + bool failed; +private: + bool *inside; +}; + +#define NON_REENTRANT_V static bool _insideNR; _NRFuse _fuseNR(&_insideNR); \ + if(!_insideNR) { \ + _insideNR = true; \ + _fuseNR.failed = false; \ + } else \ + return +#define NON_REENTRANT(v) static bool _insideNR; _NRFuse _fuseNR(&_insideNR); \ + if(!_insideNR) { \ + _insideNR = true; \ + _fuseNR.failed = false; \ + } else \ + return v + +END_UPP_NAMESPACE + +#endif diff --git a/bazaar/Functions4U/Functions4U.t b/bazaar/Functions4U/Functions4U.t index fcb6a099b..786bcb3c8 100644 --- a/bazaar/Functions4U/Functions4U.t +++ b/bazaar/Functions4U/Functions4U.t @@ -4,149 +4,217 @@ // Functions4U.cpp T_("hours") +caES("") esES("horas") -frFR("heures") +euES("") +frFR("") T_("hour") +caES("") esES("hora") -frFR("heure") +euES("") +frFR("") T_("mins") +caES("") esES("mins") -frFR("mn") +euES("") +frFR("") T_("min") +caES("") esES("min") -frFR("mn") +euES("") +frFR("") T_("secs") +caES("") esES("segs") -frFR("s") +euES("") +frFR("") T_("sec") +caES("") esES("seg") -frFR("s") +euES("") +frFR("") T_("Impossible to open file") +caES("") esES("Imposible abrir fichero") -frFR("Impossible d'ouvrir le fichier") +euES("") +frFR("") T_("Problem found") +caES("") esES("Problema encontrado") -frFR("Probl\303\250me rencontr\303\251") +euES("") +frFR("") T_("Not possible to modify ") +caES("") esES("No es posible modificar ") -frFR("Impossible de modifier") +euES("") +frFR("") T_("Not possible to create ") +caES("") esES("No es posible crear ") -frFR("Impossible de cr\303\251er") +euES("") +frFR("") T_("Not possible to delete") +caES("") esES("No es posible borrar") -frFR("Impossible de supprimer") +euES("") +frFR("") T_("There was a problem in the copy") +caES("") esES("Hubo un problema al copiar") -frFR("Il y a eu un probl\303\250me dans la copie") +euES("") +frFR("") T_("Dl cannot be released") +caES("") esES("Dl no puede ser liberada") -frFR("Dl ne peut pas \303\252tre lib\303\251r\303\251") +euES("") +frFR("") // Functions4U_Gui.cpp T_("Printing document") +caES("") esES("Imprimiendo documento") -frFR("Impression du document") +euES("") +frFR("") // bsdiff.cpp T_("File %s does not exist") +caES("") esES("Fichero %s no existe") -frFR("Le fichier %s n'existe pas") +euES("") +frFR("") T_("Patch file is empty") +caES("") esES("") -frFR("Le fichier patch est vide") +euES("") +frFR("") T_("Error opening %s") +caES("") esES("Error abriendo %s") -frFR("Erreur en ouvrant %s") +euES("") +frFR("") T_("Not enough memory") +caES("") esES("Memoria insuficiente") -frFR("M\303\251moire insuffisante") +euES("") +frFR("") T_("fwrite(%s)") +caES("") esES("") -frFR("fwrite(%s)") +euES("") +frFR("") T_("BZ2_bzWriteOpen, bz2err = %d") +caES("") esES("") -frFR("BZ2_bzWriteOpen, bz2err = %d") +euES("") +frFR("") T_("BZ2_bzWrite, bz2err = %d") +caES("") esES("") -frFR("BZ2_bzWrite, bz2err = %d") +euES("") +frFR("") T_("BZ2_bzWriteClose, bz2err = %d") +caES("") esES("") -frFR("BZ2_bzWriteClose, bz2err = %d") +euES("") +frFR("") T_("ftello") +caES("") esES("") -frFR("ftello") +euES("") +frFR("") T_("fseeko") +caES("") esES("") -frFR("fseeko") +euES("") +frFR("") T_("fclose") +caES("") esES("") -frFR("fclose") +euES("") +frFR("") // bspatch.cpp T_("New file is empty") +caES("") esES("Nuevo fichero est\303\241 vacio") -frFR("Le nouveau fichier est vide") +euES("") +frFR("") T_("fopen(%s)") +caES("") esES("") -frFR("fopen(%s)") +euES("") +frFR("") T_("Corrupt patch") +caES("") esES("Parche corrompido") -frFR("Patch corrompu") +euES("") +frFR("") T_("fread(%s)") +caES("") esES("") -frFR("fread(%s)") +euES("") +frFR("") T_("fclose(%s)") +caES("") esES("") -frFR("fclose(%s)") +euES("") +frFR("") T_("fseeko(%s, %lld)") +caES("") esES("") -frFR("fseeko(%s, %lld)") +euES("") +frFR("") T_("BZ2_bzReadOpen, bz2err = %d") +caES("") esES("") -frFR("BZ2_bzReadOpen, bz2err = %d") +euES("") +frFR("") T_("Impossible to open %s") +caES("") esES("Imposible abrir %s") -frFR("Impossible d'ouvrir %s") +euES("") +frFR("") // Obsolete T_("Please set patch file where set the changes") +caES("") esES("Por favor establecer el fichero de cambios") -frFR("SVP indiquer le patch o\303\271 mettre les changements") +euES("") +frFR("") diff --git a/bazaar/Functions4U/Functions4U.upp b/bazaar/Functions4U/Functions4U.upp index 408629284..d8e6273d7 100644 --- a/bazaar/Functions4U/Functions4U.upp +++ b/bazaar/Functions4U/Functions4U.upp @@ -33,9 +33,13 @@ file SvgColors.cpp, SvgColors.h, BSDiff readonly separator, - bsdiffwrapper.h, - plugin/bsadditional.cpp, - plugin/bsdiff.cpp, - plugin/bspatch.cpp, - plugin/Credits.txt; + bsdiff.h, + Bsdiff\bsadditional.cpp, + Bsdiff\bsdiff.cpp, + Bsdiff\bspatch.cpp, + Bsdiff\bzlib.h, + Bsdiff\Credits.txt, + Html readonly separator, + Html/htmld.cpp, + Html/htmld.h; diff --git a/bazaar/Functions4U/GatherTpp.cpp b/bazaar/Functions4U/GatherTpp.cpp index 8e4036f06..0829701d6 100644 --- a/bazaar/Functions4U/GatherTpp.cpp +++ b/bazaar/Functions4U/GatherTpp.cpp @@ -1,381 +1,347 @@ -#ifdef flagGUI -#include -#include - -#include "Functions4U/Functions4U.h" -#include "GatherTpp.h" - -NAMESPACE_UPP - -struct ScanTopicIterator : RichText::Iterator { - VectorMap *reflink; - String link; - StaticCriticalSection reflink_lock; - - ScanTopicIterator(VectorMap *reflink) : reflink(reflink) {}; - virtual bool operator()(int pos, const RichPara& para) - { - if(!IsNull(para.format.label)) - reflink->Add(para.format.label, link); - return false; - } -}; - -void GatherTpp::GatherRefLinks(const char *upp) -{ - for(FindFile pff(AppendFileName(upp, "*.*")); pff; pff.Next()) { - if(pff.IsFolder()) { - String package = pff.GetName(); - String pdir = AppendFileName(upp, package); - TopicLink tl; - tl.package = package; - for(FindFile ff(AppendFileName(pdir, "*.tpp")); ff; ff.Next()) { - if(ff.IsFolder()) { - String group = GetFileTitle(ff.GetName() ); - tl.group = group; - String dir = AppendFileName(pdir, ff.GetName()); - for(FindFile ft(AppendFileName(dir, "*.tpp")); ft; ft.Next()) { - if(ft.IsFile()) { - String path = AppendFileName(dir, ft.GetName()); - tl.topic = GetFileTitle(ft.GetName()); - String link = TopicLinkString(tl); - ScanTopicIterator sti(&reflink); - sti.link = link; - ParseQTF(ReadTopic(LoadFile(path))).Iterate(sti); - } - } - } - } - } - } -} - -struct GatherLinkIterator : RichText::Iterator { - VectorMap *reflink; - Index link; - - GatherLinkIterator(VectorMap *reflink) : reflink(reflink) {}; - virtual bool operator()(int pos, const RichPara& para) - { - for(int i = 0; i < para.GetCount(); i++) { - String l = para[i].format.link; - if(!IsNull(l)) { - if(l[0] == ':') { - int q = reflink->Find(l); - if(q < 0) - q = reflink->Find(l + "::class"); - if(q < 0) - q = reflink->Find(l + "::struct"); - if(q < 0) - q = reflink->Find(l + "::union"); - if(q >= 0) - l = (*reflink)[q]; - } - link.FindAdd(Nvl(reflink->Get(l, Null), l)); - } - } - return false; - } -}; - -String GetIndexTopic(String file) -{ - String topic = GetFileTitle(file); - String folder = GetFileFolder(file); - String topicLocation = GetFileTitle(folder); - folder = GetUpperFolder(folder); - topicLocation = GetFileTitle(folder) + "/" + topicLocation; - - return "topic://" + topicLocation + "/" + topic; -} - -int CharFilterLbl(int c) -{ - return IsAlNum(c) ? c : '.'; -} - -void QtfAsPdf(PdfDraw &pdf, const char *qtf) -{ - RichText txt = ParseQTF(qtf); - Size page = Size(3968, 6074); - UPP::Print(pdf, txt, page); -} - -/* -Htmls RoundFrame(Htmls data, String border, Color bg) -{ - return HtmlPackedTable().BgColor(bg).Width(-100) - .Attr("style", "border-style: solid; border-width: 1px; border-color: #" + border + ";") - / HtmlLine() / data; -} -*/ - -bool ContainsAt(const String &source, const String &pattern, int pos) -{ - return pos >= 0 - && pos + pattern.GetLength() <= source.GetLength() - && 0 == memcmp(source.Begin() + pos, pattern.Begin(), pattern.GetLength()); -} - -bool StartsWith(const String &source, const String &pattern) -{ - return ContainsAt(source, pattern, 0); -} - -bool EndsWith(const String &source, const String &pattern) -{ - return ContainsAt(source, pattern, source.GetLength() - pattern.GetLength()); -} - -String GatherTpp::QtfAsHtml(const char *qtf, Index& css, - const VectorMap& links, - const VectorMap& labels, - const String& outdir, const String& fn) -{ - return EncodeHtml(ParseQTF(qtf), css, links, labels, outdir, fn, Zoom(8, 40), escape, 40); -} - -String GetText(const char *s) -{ - return GetTopic(s).text; -} - -void GatherTpp::ExportPage(int i, String htmlFolder, String keywords) -{ - Index css; - String path = links.GetKey(i); - - String text = GetText(path); - - String qtflangs; - String strlang; - - String page = tt[i]; - page = QtfAsHtml(page, css, links, labels, htmlFolder, links[i]); - -/* - Color paper = SWhite; - Color bg = Color(210, 217, 210); - - Htmls html; - html << - HtmlPackedTable().Width(-100) / - HtmlLine().ColSpan(3) + - HtmlPackedTable().Width(-100) / ( - HtmlLine().ColSpan(3).BgColor(bg).Height(6) / "" + - HtmlRow() / ( - HtmlTCell().Width(-100).BgColor(bg) / ( - RoundFrame(page , "6E89AE;padding: 10px;", White) - ) - ) - ); -*/ - String topicTitle = tt.GetKey(i); - String pageTitle = tt[i].title; - if(IsNull(pageTitle)) - pageTitle = title; -/* - if(StartsWith(topicTitle, "examples$")) - pageTitle = "Demos / " + pageTitle; - else if(StartsWith(topicTitle, "reference$")) - pageTitle = "Examples / " + pageTitle; -*/ - if(pageTitle != title) - pageTitle << " :: " << title; -/* - Htmls content = - "\n" + - HtmlHeader(pageTitle, AsCss(css) + - "a.l1 { text-decoration:none; font-size: 8pt; font-family: sans-serif; " - "font-weight: normal; }\n" - "a.l1:link { color:#000000; }\n" - "a.l1:visited { color:#000080; }\n" - "a.l1:hover { color:#9933CC; }\n" - "a.l1:active { color:#000000; }\n" - "a.l2 { text-decoration:none; font-size: 12pt; font-family: sans-serif; " - "font-variant: small-caps; }\n" - "a.l2:link { color:#0066FF; }\n" - "a.l2:visited { color:#FF6600; }\n" - "a.l2:hover { color:#BC0624; }\n" - "a.l2:active { color:#BC0024; }\n", - "" - "" - ) - .BgColor(bg) - .Alink(Red).Link(Black).Vlink(Blue) - / html; -*/ - - SaveFile(AppendFileName(htmlFolder, links[i]), - String().Cat() << - "" - "" - "" - "" - "" - "" << pageTitle << "" - "" - "" - "" - "
" - "" - "" - "" - "" - "
" - "" - "" - "
" << page << "
" - "
" - "" - ); -} - -String GatherTpp::TopicFileName(const char *topic) -{ - TopicLink tl = ParseTopicLink(topic); - String file = AppendFileName(dir, AppendFileName(tl.group + ".tpp", tl.topic + ".tpp")); - if (FileExists(file)) - return file; - - for (int i = 0; i < rootFolders.GetCount(); ++i) { - if (rootFolders[i] != dir) { - file = AppendFileName(rootFolders[i], AppendFileName(tl.package , AppendFileName(tl.group + ".tpp", tl.topic + ".tpp"))); - if (FileExists(file)) - return file; - } - } - return ""; -} - -String TopicFileNameHtml(const char *topic) -{ - TopicLink tl = ParseTopicLink(topic); - return tl.group + "$" + tl.package+ "$" + tl.topic + ".html"; -} - -String GatherTpp::GatherTopics(const char *topic, String& title) -{ - int q = tt.Find(topic); - if(q < 0) { - Topic p = ReadTopic(LoadFile(TopicFileName(topic))); - title = p.title; - String t = p; - if(IsNull(t)) - return "index.html"; - tt.Add(topic) = p; - GatherLinkIterator ti(&(reflink)); - ParseQTF(t).Iterate(ti); - for(int i = 0; i < ti.link.GetCount(); i++) { - String dummy; - GatherTopics(ti.link[i], dummy); - } - } else - title = tt[q].title; - return TopicFileNameHtml(topic); -} - - -String GatherTpp::GatherTopics(const char *topic) -{ - String dummy; - return GatherTopics(topic, dummy); -} - -bool GatherTpp::Load(String indexFile, Gate2 progress) { - indexTopic = GetIndexTopic(indexFile); - for (int i = 0; i < rootFolders.GetCount(); ++i) { - if (progress(i+1, rootFolders.GetCount())) - return false; - dir = rootFolders[i]; - - if (!DirectoryExists(dir)) - return false; - - GatherRefLinks(dir); - - if (i == 0) - GatherTopics(indexTopic); - } - return true; -} - -bool GatherTpp::MakeHtml(const char *folder, Gate2 progress) { - DeleteFolderDeep(folder); - DirectoryCreate(folder); - - for(int i = 0; i < tt.GetCount(); i++) { - String topic = tt.GetKey(i); - links.Add(topic, topic == indexTopic ? "index.html" : - memcmp(topic, "topic://", 8) ? topic : TopicFileNameHtml(topic)); - } - for(int i = 0; i < reflink.GetCount(); i++) { - String l = reflink.GetKey(i); - String lbl = Filter(l, CharFilterLbl); - String f = links.Get(reflink[i], Null) + '#' + lbl; - links.Add(l, f); - static const char *x[] = { "::struct", "::class", "::union" }; - for(int ii = 0; ii < 3; ii++) { - String e = x[ii]; - if(EndsWith(l, e)) { - links.Add(l.Mid(0, l.GetLength() - e.GetLength()), f); - } - } - labels.Add(l, lbl); - } - - for(int i = 0; i < tt.GetCount(); i++) { - if (progress(i+1, tt.GetCount())) - return false; - ExportPage(i, folder); - } - return true; -} - -bool GatherTpp::MakePdf(const char *filename, Gate2 progress) { - PdfDraw pdf; - for(int i = 0; i < tt.GetCount(); i++) { - if (progress(i+1, tt.GetCount())) - return false; - bool dopdf = true; - for (int j = 0; j < i; ++j) { - if (tt[j].text == tt[i].text) { - dopdf = false; - break; - } - } - if (dopdf) - QtfAsPdf(pdf, tt[i]); - } - SaveFile(filename, pdf.Finish()); - return true; -} - -int GatherTpp::FindTopic(const String name) { - return tt.Find(name); -} - -Topic &GatherTpp::GetTopic(int id) { - return tt[id]; -} - -Topic &GatherTpp::AddTopic(const String name) { - return tt.Add(name); -} - -END_UPP_NAMESPACE - +#ifdef flagGUI +#include +#include + +#include +#include "GatherTpp.h" +#include + +NAMESPACE_UPP + +struct ScanTopicIterator : RichText::Iterator { + VectorMap *reflink; + String link; + StaticCriticalSection reflink_lock; + + ScanTopicIterator(VectorMap *reflink) : reflink(reflink) {}; + virtual bool operator()(int pos, const RichPara& para) + { + if(!IsNull(para.format.label)) + reflink->Add(para.format.label, link); + return false; + } +}; + +void GatherTpp::GatherRefLinks(const char *upp) +{ + for(FindFile pff(AppendFileName(upp, "*.*")); pff; pff.Next()) { + if(pff.IsFolder()) { + String package = pff.GetName(); + String pdir = AppendFileName(upp, package); + TopicLink tl; + tl.package = package; + for(FindFile ff(AppendFileName(pdir, "*.tpp")); ff; ff.Next()) { + if(ff.IsFolder()) { + String group = GetFileTitle(ff.GetName() ); + tl.group = group; + String dir = AppendFileName(pdir, ff.GetName()); + for(FindFile ft(AppendFileName(dir, "*.tpp")); ft; ft.Next()) { + if(ft.IsFile()) { + String path = AppendFileName(dir, ft.GetName()); + tl.topic = GetFileTitle(ft.GetName()); + String link = TopicLinkString(tl); + ScanTopicIterator sti(&reflink); + sti.link = link; + ParseQTF(ReadTopic(LoadFile(path))).Iterate(sti); + } + } + } + } + } + } +} + +struct GatherLinkIterator : RichText::Iterator { + VectorMap *reflink; + Index link; + + GatherLinkIterator(VectorMap *reflink) : reflink(reflink) {}; + virtual bool operator()(int pos, const RichPara& para) + { + for(int i = 0; i < para.GetCount(); i++) { + String l = para[i].format.link; + if(!IsNull(l)) { + if(l[0] == ':') { + int q = reflink->Find(l); + int w = q; + if(q < 0) + q = reflink->Find(l + "::class"); + if(q < 0) + q = reflink->Find(l + "::struct"); + if(q < 0) + q = reflink->Find(l + "::union"); + if(q >= 0) + l = (*reflink)[q]; + } + link.FindAdd(Nvl(reflink->Get(l, Null), l)); + } + } + return false; + } +}; + +String GetIndexTopic(String file) +{ + String topic = GetFileTitle(file); + String folder = GetFileFolder(file); + String topicLocation = GetFileTitle(folder); + folder = GetUpperFolder(folder); + topicLocation = GetFileTitle(folder) + "/" + topicLocation; + + return "topic://" + topicLocation + "/" + topic; +} + +int CharFilterLbl(int c) +{ + return IsAlNum(c) ? c : '.'; +} + +void QtfAsPdf(PdfDraw &pdf, const char *qtf) +{ + RichText txt = ParseQTF(qtf); + Size page = Size(3968, 6074); + UPP::Print(pdf, txt, page); +} + +HtmlsD RoundFrame(HtmlsD data, String border, Color bg) +{ + return HtmlPackedTableD() + .BgColor(bg).Width(-100) + .Attr("style", "border-style: solid; border-width: 1px; border-color: #" + border + ";") + / HtmlLineD() / data; +} + +bool ContainsAt(const String &source, const String &pattern, int pos) +{ + return pos >= 0 + && pos + pattern.GetLength() <= source.GetLength() + && 0 == memcmp(source.Begin() + pos, pattern.Begin(), pattern.GetLength()); +} + +bool StartsWith(const String &source, const String &pattern) +{ + return ContainsAt(source, pattern, 0); +} + +bool EndsWith(const String &source, const String &pattern) +{ + return ContainsAt(source, pattern, source.GetLength() - pattern.GetLength()); +} + +String GatherTpp::QtfAsHtml(const char *qtf, Index& css, + const VectorMap& links, + const VectorMap& labels, + const String& outdir, const String& fn) +{ + return EncodeHtml(ParseQTF(qtf), css, links, labels, outdir, fn, Zoom(8, 40), escape, 40); +} + +String GetText(const char *s) +{ + return GetTopic(s).text; +} + +void GatherTpp::ExportPage(int i, String htmlFolder, String keywords) +{ + Index css; + String path = links.GetKey(i); + + String text = GetText(path); + int h; + h = ParseQTF(tt[i].text).GetHeight(1000); + + String qtflangs; + String strlang; + + String page = tt[i]; + page = QtfAsHtml(page, css, links, labels, htmlFolder, links[i]); + + Color paper = SWhite; + Color bg = Color(210, 217, 210); + + HtmlsD html; + html << + HtmlPackedTableD().Width(-100) / + HtmlLineD().ColSpan(3) + + HtmlPackedTableD().Width(-100) / ( + HtmlLineD().ColSpan(3).BgColor(bg).Height(6) / "" + + HtmlRowD() / ( + HtmlTCellD().Width(-100).BgColor(bg) / ( + RoundFrame(page , "6E89AE;padding: 10px;", White) + ) + ) + ); + + String topicTitle = tt.GetKey(i); + String pageTitle = tt[i].title; + if(IsNull(pageTitle)) + pageTitle = title; +/* + if(StartsWith(topicTitle, "examples$")) + pageTitle = "Demos / " + pageTitle; + else if(StartsWith(topicTitle, "reference$")) + pageTitle = "Examples / " + pageTitle; +*/ + if(pageTitle != title) + pageTitle << " :: " << title; + + HtmlsD content = + "\n" + + HtmlHeaderD(pageTitle, AsCss(css) + + "a.l1 { text-decoration:none; font-size: 8pt; font-family: sans-serif; " + "font-weight: normal; }\n" + "a.l1:link { color:#000000; }\n" + "a.l1:visited { color:#000080; }\n" + "a.l1:hover { color:#9933CC; }\n" + "a.l1:active { color:#000000; }\n" + "a.l2 { text-decoration:none; font-size: 12pt; font-family: sans-serif; " + "font-variant: small-caps; }\n" + "a.l2:link { color:#0066FF; }\n" + "a.l2:visited { color:#FF6600; }\n" + "a.l2:hover { color:#BC0624; }\n" + "a.l2:active { color:#BC0024; }\n", + "" + "" + ) + .BgColor(bg) + .Alink(Red).Link(Black).Vlink(Blue) + / html; + SaveFile(AppendFileName(htmlFolder, links[i]), content); +} + +String GatherTpp::TopicFileName(const char *topic) +{ + TopicLink tl = ParseTopicLink(topic); + String file = AppendFileName(dir, AppendFileName(tl.group + ".tpp", tl.topic + ".tpp")); + if (FileExists(file)) + return file; + + for (int i = 0; i < rootFolders.GetCount(); ++i) { + if (rootFolders[i] != dir) { + file = AppendFileName(rootFolders[i], AppendFileName(tl.package , AppendFileName(tl.group + ".tpp", tl.topic + ".tpp"))); + if (FileExists(file)) + return file; + } + } + return ""; +} + +String TopicFileNameHtml(const char *topic) +{ + TopicLink tl = ParseTopicLink(topic); + return tl.group + "$" + tl.package+ "$" + tl.topic + ".html"; +} + +String GatherTpp::GatherTopics(const char *topic, String& title) +{ + int q = tt.Find(topic); + if(q < 0) { + Topic p = ReadTopic(LoadFile(TopicFileName(topic))); + title = p.title; + String t = p; + if(IsNull(t)) + return "index.html"; + tt.Add(topic) = p; + GatherLinkIterator ti(&(reflink)); + ParseQTF(t).Iterate(ti); + for(int i = 0; i < ti.link.GetCount(); i++) { + String dummy; + GatherTopics(ti.link[i], dummy); + } + } else + title = tt[q].title; + return TopicFileNameHtml(topic); +} + + +String GatherTpp::GatherTopics(const char *topic) +{ + String dummy; + return GatherTopics(topic, dummy); +} + +bool GatherTpp::Load(String indexFile, Gate2 progress) { + indexTopic = GetIndexTopic(indexFile); + for (int i = 0; i < rootFolders.GetCount(); ++i) { + if (progress(i+1, rootFolders.GetCount())) + return false; + dir = rootFolders[i]; + + if (!DirectoryExists(dir)) + return false; + + GatherRefLinks(dir); + + if (i == 0) + GatherTopics(indexTopic); + } + return true; +} + +bool GatherTpp::MakeHtml(const char *folder, Gate2 progress) { + DeleteFolderDeep(folder); + DirectoryCreate(folder); + + for(int i = 0; i < tt.GetCount(); i++) { + String topic = tt.GetKey(i); + links.Add(topic, topic == indexTopic ? "index.html" : + memcmp(topic, "topic://", 8) ? topic : TopicFileNameHtml(topic)); + } + for(int i = 0; i < reflink.GetCount(); i++) { + String l = reflink.GetKey(i); + String lbl = Filter(l, CharFilterLbl); + String f = links.Get(reflink[i], Null) + '#' + lbl; + links.Add(l, f); + static const char *x[] = { "::struct", "::class", "::union" }; + for(int ii = 0; ii < 3; ii++) { + String e = x[ii]; + if(EndsWith(l, e)) { + links.Add(l.Mid(0, l.GetLength() - e.GetLength()), f); + } + } + labels.Add(l, lbl); + } + + for(int i = 0; i < tt.GetCount(); i++) { + if (progress(i+1, tt.GetCount())) + return false; + ExportPage(i, folder); + } + return true; +} + +bool GatherTpp::MakePdf(const char *filename, Gate2 progress) { + PdfDraw pdf; + for(int i = 0; i < tt.GetCount(); i++) { + if (progress(i+1, tt.GetCount())) + return false; + bool dopdf = true; + for (int j = 0; j < i; ++j) { + if (tt[j].text == tt[i].text) { + dopdf = false; + break; + } + } + if (dopdf) + QtfAsPdf(pdf, tt[i]); + } + SaveFile(filename, pdf.Finish()); + return true; +} + +int GatherTpp::FindTopic(const String name) { + return tt.Find(name); +} + +Topic &GatherTpp::GetTopic(int id) { + return tt[id]; +} + +Topic &GatherTpp::AddTopic(const String name) { + return tt.Add(name); +} + +END_UPP_NAMESPACE + #endif \ No newline at end of file diff --git a/bazaar/Functions4U/Html/htmld.cpp b/bazaar/Functions4U/Html/htmld.cpp new file mode 100644 index 000000000..e34cb4922 --- /dev/null +++ b/bazaar/Functions4U/Html/htmld.cpp @@ -0,0 +1,622 @@ +#include +#include "htmld.h" + +NAMESPACE_UPP + +String ToHtmlD(const char *s) +{ + if(*s == '`') + return String(++s); + + String result; + while(*s) { + if(*s == 31) + result.Cat(" "); + else + if(*s == '<') + result.Cat("<"); + else + if(*s == '>') + result.Cat(">"); + else + if(*s == '&') + result.Cat("&"); + else + if(*s == '\"') + result.Cat("""); + else + if((byte)*s < ' ') + result.Cat(NFormat("&#%d;", (byte)*s)); + else + result.Cat(*s); + s++; + } + return result; +} + +/* +HtmlsD& HtmlsD::Qtf(const char *qtf) { + HtmlDocOut html; + html.Qtf(qtf); + Cat(html.Get()); + return *this; +} +*/ + +HtmlsD& HtmlsD::Text(const char *s) { Cat(ToHtmlD(s)); return *this; } +HtmlsD& HtmlsD::Quote(const char *s) { Cat('\"' + ToHtmlD(s) + '\"'); return *this; } +HtmlsD& HtmlsD::Color(class Color color) { Quote(ColorToHtml(color)); return *this; } +HtmlsD& HtmlsD::Percent(double d) { return Quote(UPP::Format("%g%%", d)); } + +HtmlsD& HtmlsD::Color(const char *nm, class Color c) { + if(!UPP::IsNull(c)) + Attr(nm); Cat('='); return Color(c); +} + +HtmlsD& HtmlsD::Percent(const char *nm, double d) { Attr(nm); Cat('='); return Percent(d); } + +HtmlsD& HtmlsD::Attr(const char *a) { Cat(' '); Cat(a); return *this; } +HtmlsD& HtmlsD::Attr(const char *a, const char *s) { Attr(a); Cat('='); return Quote(s); } +HtmlsD& HtmlsD::Attr(const char *a, String s) { return Attr(a, ~s); } +HtmlsD& HtmlsD::Attr(const char *a, int i) { return Attr(a, UPP::Format("%d", i)); } +HtmlsD& HtmlsD::Attr(const char *a, double d) { return Attr(a, UPP::Format("%g", d)); } +HtmlsD& HtmlsD::Attr(const char *a, Date d) { return Attr(a, UPP::Format(d)); } +HtmlsD& HtmlsD::Attr(const char *a, Value v) { return Attr(a, StdFormat(v)); } + +HtmlsD& HtmlsD::Attp(const char *a, double v) { return v >= 0 ? Attr(a, v) : Percent(a, -v); } + +HtmlsD& HtmlsD::Atth(const char *a, const char *h) +{ + Attr(a); + Cat('='); + Cat('\"'); + Cat(h); + Cat('\"'); + return *this; +} + +HtmlsD& HtmlsD::Tag(const char *tag) { Cat('<'); Cat(tag); return *this; } +HtmlsD& HtmlsD::Gat() { Cat('>'); return *this; } + +HtmlsD& HtmlsD::Nbsp() { Cat(" "); return *this; } +HtmlsD& HtmlsD::Br() { Cat("
", 4); return *this; } +HtmlsD& HtmlsD::Hr() { Cat("
", 4); return *this; } +HtmlsD& HtmlsD::Lf() { Cat('\n'); return *this; } + +HtmlsD& HtmlsD::Cat(const HtmlTagD& tag) +{ + Cat(tag.GetTag()); + Cat(tag.GetEndTag()); + return *this; +} + +HtmlTagD& HtmlTagD::Type(const char *s) { return Attr("TYPE", s); } + +HtmlTagD& HtmlTagD::Name(const char *s) { return Attr("NAME", s); } +HtmlTagD& HtmlTagD::Name(String id) { return Attr("NAME", ~id); } + +HtmlTagD& HtmlTagD::Data(const char *v) { return Attr("VALUE", v); } +HtmlTagD& HtmlTagD::Data(String v) { return Attr("VALUE", v); } +HtmlTagD& HtmlTagD::Data(double v) { return Attr("VALUE", v); } +HtmlTagD& HtmlTagD::Data(Value v) { return Attr("VALUE", v); } + +HtmlTagD& HtmlTagD::ReadOnly() { return Attr("READONLY"); } +HtmlTagD& HtmlTagD::Multiple() { return Attr("MULTIPLE"); } +HtmlTagD& HtmlTagD::Selected() { return Attr("SELECTED"); } + +HtmlTagD& HtmlTagD::Align(Alignment align) +{ + switch(align) { + case ALIGN_CENTER: return Attr("ALIGN", "CENTER"); + case ALIGN_RIGHT: return Attr("ALIGN", "RIGHT"); + default: return Attr("ALIGN", "LEFT"); + } +} + +HtmlTagD& HtmlTagD::Left() { return Align(ALIGN_LEFT); } +HtmlTagD& HtmlTagD::Right() { return Align(ALIGN_RIGHT); } +HtmlTagD& HtmlTagD::Center() { return Align(ALIGN_CENTER); } + +HtmlTagD& HtmlTagD::VAlign(Alignment align) +{ + switch(align) { + case ALIGN_CENTER: return Attr("VALIGN", "MIDDLE"); + case ALIGN_BOTTOM: return Attr("VALIGN", "BOTTOM"); + default: return Attr("VALIGN", "TOP"); + } +} + +HtmlTagD& HtmlTagD::Top() { return VAlign(ALIGN_TOP); } +HtmlTagD& HtmlTagD::VCenter() { return VAlign(ALIGN_CENTER); } +HtmlTagD& HtmlTagD::Bottom() { return VAlign(ALIGN_BOTTOM); } + +HtmlTagD& HtmlTagD::HotKey(char c) { return c ? Attr("ACCESSKEY", String(c, 1)) : *this; } +HtmlTagD& HtmlTagD::Size(int c) { return Attr("SIZE", c); } +HtmlTagD& HtmlTagD::Size(int cx, int cy) { return Attr("SIZE", Format("%d, %d", cx, cy)); } + +HtmlTagD& HtmlTagD::Color(class Color color) { return Color("COLOR", color); } +HtmlTagD& HtmlTagD::BorderColor(class Color col) { return Color("BORDERCOLOR", col); } +HtmlTagD& HtmlTagD::BgColor(class Color color) { return Color("BGCOLOR", color); } + +HtmlTagD& HtmlTagD::Face(const char *s) { return Attr("FACE", s); } +HtmlTagD& HtmlTagD::Border(int i) { return Attr("BORDER", i); } +HtmlTagD& HtmlTagD::CellSpacing(int i) { return Attr("CELLSPACING", i); } +HtmlTagD& HtmlTagD::CellPadding(int i) { return Attr("CELLPADDING", i); } + +HtmlTagD& HtmlTagD::Width(double w) { return Attp("WIDTH", w); } +HtmlTagD& HtmlTagD::Height(double h) { return Attp("HEIGHT", h); } + +HtmlTagD& HtmlTagD::RowSpan(int i) { return Attr("ROWSPAN", i); } +HtmlTagD& HtmlTagD::ColSpan(int i) { return Attr("COLSPAN", i); } + +HtmlTagD& HtmlTagD::Class(const char *s) { return Attr("CLASS", s); } +HtmlTagD& HtmlTagD::DataFld(const char *s) { return Attr("DATAFLD", s); } +HtmlTagD& HtmlTagD::DataSrc(const char *s) { return Attr("DATASRC", s); } +HtmlTagD& HtmlTagD::Href(const char *s) { return Atth("HREF", s); } +HtmlTagD& HtmlTagD::HtmlId(const char *s) { return Attr("ID", s); } +HtmlTagD& HtmlTagD::Lang(const char *s) { return Attr("LANG", s); } +HtmlTagD& HtmlTagD::Language(const char *s) { return Attr("LANGUAGE", s); } +HtmlTagD& HtmlTagD::JavaScript() { return Language("JAVASCRIPT"); } +HtmlTagD& HtmlTagD::VbScript() { return Language("VBSCRIPT"); } +HtmlTagD& HtmlTagD::Methods(const char *s) { return Attr("METHODS", s); } +HtmlTagD& HtmlTagD::Rel(const char *s) { return Attr("REL", s); } +HtmlTagD& HtmlTagD::Rev(const char *s) { return Attr("REV", s); } +HtmlTagD& HtmlTagD::Style(const char *s) { return Attr("STYLE", s); } +HtmlTagD& HtmlTagD::TabIndex(int i) { return Attr("TABINDEX", i); } +HtmlTagD& HtmlTagD::Target(const char *s) { return Attr("TARGET", s); } +HtmlTagD& HtmlTagD::TargetBlank() { return Target("_blank"); } +HtmlTagD& HtmlTagD::TargetParent() { return Target("_parent"); } +HtmlTagD& HtmlTagD::TargetSelf() { return Target("_self"); } +HtmlTagD& HtmlTagD::TargetTop() { return Target("_top"); } +HtmlTagD& HtmlTagD::Title(const char *s) { return Attr("TITLE", s); } +HtmlTagD& HtmlTagD::Urn(const char *s) { return Attr("URN", s); } +HtmlTagD& HtmlTagD::Alt(const char *s) { return Attr("ALT", s); } +HtmlTagD& HtmlTagD::Coords(const char *s) { return Attr("COORDS", s); } +HtmlTagD& HtmlTagD::NoHref() { return Attr("NOHREF"); } +HtmlTagD& HtmlTagD::Shape(const char *s) { return Attr("SHAPE", s); } +HtmlTagD& HtmlTagD::ShapeCirc() { return Shape("CIRC"); } +HtmlTagD& HtmlTagD::ShapePoly() { return Shape("POLY"); } +HtmlTagD& HtmlTagD::ShapeRect() { return Shape("RECT"); } +HtmlTagD& HtmlTagD::Balance(double v) { return Attr("BALANCE", v); } +HtmlTagD& HtmlTagD::Loop(int i) { return Attr("LOOP", i); } +HtmlTagD& HtmlTagD::Volume(double v) { return Attr("VOLUME", v); } +HtmlTagD& HtmlTagD::Src(const char *s) { return Attr("SRC", s); } +HtmlTagD& HtmlTagD::Alink(class Color c) { return Color("ALINK", c); } +HtmlTagD& HtmlTagD::Vlink(class Color c) { return Color("VLINK", c); } +HtmlTagD& HtmlTagD::Link(class Color c) { return Color("LINK", c); } +HtmlTagD& HtmlTagD::Background(const char *s) { return Attr("BACKGROUND", s); } +HtmlTagD& HtmlTagD::OnClick(const char *s) { return Atth("onClick", s); } + +HtmlsD HtmlTagD::GetTag() const { + return tag.IsEmpty() ? (String&)tag : tag + '>'; +} + +HtmlsD HtmlTagD::GetEndTag() const { + return end; +} + +void HtmlTagD::Combine(const HtmlTagD& tag2) +{ + if(tag2.IsEmpty()) return; + if(tag.GetLength()) { + tag = tag + '>' + tag2.tag; + end = tag2.end + end; + } + else { + tag = tag2.tag; + end = tag2.end; + } +} + +HtmlsD HtmlTagD::ApplyTo(String s) const +{ + HtmlsD h; + h.Cat(GetTag()); + h.Cat(s); + h.Cat(GetEndTag()); + return h; +} + +HtmlsD HtmlTagD::ApplyTo(const char *s) const +{ + HtmlsD h; + h.Cat(GetTag()); + h.Cat(s); + h.Cat(GetEndTag()); + return h; +} + +HtmlTagD& HtmlTagD::SingleTag(const char *s) +{ + tag = "<"; + tag.Cat(s); + return *this; +} + +HtmlTagD& HtmlTagD::PairTag(const char *s) +{ + SingleTag(s); + end = "'); + end.Cat('\n'); + return *this; +} + +HtmlTagD::HtmlTagD(const char *tag) { + PairTag(tag); +} + +HtmlTagD HtmlSingleTagD(const char *tag) { + return HtmlTagD().SingleTag(tag); +} + +HtmlTagD HtmlInputD(const char *type, const char *name) +{ + HtmlTagD tag = HtmlSingleTagD("INPUT").Type(type); + if(name && *name) + tag.Name(name); + return tag; +} + +HtmlTagD HtmlEditD(String name) +{ + return HtmlInputD("TEXT", name); +} + +HtmlTagD HtmlEditD(String name, int size, int maxlength, const char *defaultValue, bool password) +{ + HtmlTagD tag = HtmlInputD(password ? "PASSWORD" : "TEXT", name) + .Size(size).Attr("MAXLENGTH", maxlength); + if(defaultValue && *defaultValue) + tag.Data(defaultValue); + return tag; +} + +HtmlTagD HtmlHiddenD(String name, Value val) { + return HtmlInputD("HIDDEN").Name(name).Data(val); +} + +HtmlTagD HtmlHiddenD(const char *name, Value val) { + return HtmlInputD("HIDDEN").Name(name).Data(val); +} + +HtmlTagD HtmlHiddenD(Value val) { + return HtmlHiddenD("STATE", val); +} + +HtmlTagD HtmlSubmitD(const char *s) { + return HtmlInputD("SUBMIT").Data(s); +} + +HtmlTagD HtmlSelectD(String name) { + return HtmlTagD("SELECT").Name(name); +} + +HtmlsD HtmlOptionD(Value val, const char *text, bool selected) +{ + HtmlTagD option("OPTION"); + option.Data(val); + if(selected) + option.Selected(); + return option / text; +} + +HtmlTagD HtmlTableD() { + return HtmlTagD("TABLE"); +} + +HtmlTagD HtmlRowD() { + return HtmlTagD("TR"); +} + +HtmlTagD HtmlCellD() { + return HtmlTagD("TD"); +} + +/* +HtmlTagD HtmlFont(Font font) { + HtmlTagD tag; + if(font.IsBold()) + tag /= HtmlTagD("B"); + if(font.IsItalic()) + tag /= HtmlTagD("I"); + if(font.IsUnderline()) + tag /= HtmlTagD("U"); + if(font.IsStrikeout()) + tag /= HtmlTagD("S"); + HtmlTagD fnt("FONT"); + fnt.Face(FontFaceToHtml(font)); + fnt.Size(FontSizeToHtml(font)); + return tag / fnt; +} +*/ + +HtmlTagD HtmlLinkD(const char *link) +{ + return HtmlTagD("A").Href(link); +} + +HtmlsD HtmlBlockD(HtmlsD html, double width, double left, double top, double right, double bottom, + Alignment align) +{ + HtmlsD h; + if(top) + h = HtmlRowD() / HtmlCellD().Height(top) / ""; + if(left || right || align != ALIGN_LEFT) + h += HtmlRowD() / ( + HtmlCellD().Width(left) + + HtmlCellD().Align(align).Width(width) / html + + HtmlCellD().Width(right) + ); + if(bottom) + h += HtmlRowD() / HtmlCellD().Height(bottom) / ""; + return h.GetLength() ? HtmlTableD().Border(0).Width(-100).CellSpacing(0).CellPadding(0) / h + : html; +} + +HtmlTagD HtmlHeaderD(const char *title, String css, const char *other) +{ + String h = + "HTML>\r\n" + "\t\n" + "\t\n" + "\t\n" + "" + String(title) + "\r\n" + ; + if(!IsNull(css)) + h << "\r\n"; + if(other) + h << other; + h << "\n" + t2.Tag(); + t.End() = t2.End() + "\n" + t1.End(); + return t; + } +} + +HtmlsD operator % (const HtmlTagD& tag, const char *s) +{ + HtmlsD h; + h.Cat(tag.GetTag()); + h.Lf(); + h.Cat(s); + h.Lf(); + h.Cat(tag.GetEndTag()); +// h.Lf(); + return h; +} + +HtmlTagD HtmlFontColorD(Color c) { return !IsNull(c) ? HtmlTagD("FONT").Color(c) : HtmlTagD(); } +HtmlTagD HtmlFontSizeD(int s) { return HtmlTagD("FONT").Attr("SIZE", s); } + +HtmlTagD HtmlLinkD(const char *link, const char *target) +{ + HtmlTagD tag("A"); + tag.Href(link); + if(target && *target) + tag.Target(target); + return tag; +} + +HtmlTagD HtmlImgD(String src, String alt) +{ + return HtmlSingleTagD("IMG").Src(src).Alt(alt); +} + +HtmlsD HtmlTextAreaD(String name, Size size, const char *defaultValue) +{ + return HtmlTagD("TEXTAREA").Name(name).Attr("ROWS", size.cy).Attr("COLS", size.cx) + .Attr("WRAP", "virtual") + / ToHtmlD(defaultValue ? defaultValue : ""); +} + +HtmlTagD HtmlButtonD(String name, const char *text) +{ + return HtmlInputD("SUBMIT", name).Data(text); +} + +HtmlTagD HtmlWarnD(Color color) +{ + return HtmlItalicD() / HtmlFontColorD(color); +} + +HtmlTagD HtmlPackedTableD() +{ + return HtmlTableD().Border(0).CellSpacing(0).CellPadding(0); +} + +HtmlTagD HtmlFormD(String action, bool multipart, String method) +{ + HtmlTagD tag = HtmlTagD("FORM").Attr("ACTION", action).Attr("METHOD", method); + if(multipart) + tag.Attr("ENCTYPE", "multipart/form-data"); + return tag; +} + +HtmlsD HtmlUploadD(String name) +{ + return HtmlInputD("FILE", name); +} + +HtmlsD HtmlCheckD(String name, bool on) +{ + HtmlTagD tag = HtmlInputD("CHECKBOX", name).Data("1"); + if(on) + tag.Attr("CHECKED"); + return tag; +} + +HtmlTagD HtmlTCellD() +{ + return HtmlCellD().Top(); +} + +HtmlTagD HtmlRowCellD() +{ + return HtmlRowD() % HtmlCellD(); +} + +HtmlTagD HtmlRowTCellD() +{ + return HtmlRowD() % HtmlTCellD(); +} + +HtmlsD HtmlMenuD(bool active, const char *text, const char *url, int wd) +{ + HtmlTagD table = HtmlTableD().CellSpacing(0).Border(2) + .BorderColor(Black).BgColor(active ? Yellow : WhiteGray); + if(wd) + table.Width(wd); + return table % HtmlRowD() % HtmlCellD().Center() + / HtmlLinkD(url) / HtmlFontColorD(Black) / (active ? HtmlBoldD() / text : HtmlsD(text)); +} + +HtmlTagD HtmlDialogD(int width) +{ + return HtmlTableD().Width(width).CellSpacing(0).CellPadding(1).Border(1).BgColor(WhiteGray) + % HtmlRowD() % HtmlCellD() + % HtmlTableD().Width(-100).CellSpacing(4).CellPadding(0).Border(0).BgColor(WhiteGray); +} + +HtmlsD HtmlHeadD(String title, const char *charset) +{ + HtmlsD head; + head << HtmlTagD("TITLE") / title << '\n' + << HtmlSingleTagD("META") + .Attr("HTTP-EQUIV", "Content-Type") + .Attr("CONTENT", String("text/html; charset=") + charset); + return HtmlTagD("HEAD") % head + "\n\n"; +} + +HtmlsD HtmlPageD(String title, const HtmlsD& body, Color bgcolor, const char *charset) +{ + return HtmlTagD("HTML") % (HtmlHeadD(title, charset) + HtmlTagD("BODY").BgColor(bgcolor) % body); +} + +HtmlsD HtmlTitlePageD(String title, const HtmlsD& body, Color bgcolor, const char *charset) +{ + return HtmlPageD(title, HtmlTagD("H1") / title + "\n\n" + body, bgcolor); +} + +HtmlTagD HtmlLineD() +{ + return HtmlRowD() / HtmlCellD(); +} + +HtmlTagD HtmlParaD() +{ + return HtmlTagD("p"); +} + +HtmlTagD HtmlCourierD(int size) +{ + return HtmlTagD("span") + .Attr("style", Sprintf("font-size: %dpt; font-family: monospace;", size)); +} + +HtmlTagD HtmlArialD(int size) +{ + return HtmlTagD("span") + .Attr("style", Sprintf("font-size: %dpt; font-family: sans-serif;", size)); +} + +HtmlTagD HtmlRomanD(int size) +{ + return HtmlTagD("span") + .Attr("style", Sprintf("font-size: %dpt; font-family: serif;", size)); +} + +HtmlTagD HtmlCourierD() +{ + return HtmlTagD("span").Attr("style", "font-family: monospace;"); +} + +HtmlTagD HtmlArialD() +{ + return HtmlTagD("span").Attr("style", "font-family: sans-serif;"); +} + +HtmlTagD HtmlRomanD() +{ + return HtmlTagD("span").Attr("style", "font-family: serif;"); +} + +HtmlTagD HtmlFntSizeD(int size) +{ + return HtmlTagD("span").Attr("style", Sprintf("font-size: %dpt", size)); +} + +END_UPP_NAMESPACE diff --git a/bazaar/Functions4U/Html/htmld.h b/bazaar/Functions4U/Html/htmld.h new file mode 100644 index 000000000..b72f92673 --- /dev/null +++ b/bazaar/Functions4U/Html/htmld.h @@ -0,0 +1,294 @@ +#ifndef __Html_htmld__ +#define __Html_htmld__ + +NAMESPACE_UPP + +String ToHtmlD(const char *s); + +class HtmlTagD; + +class HtmlsD : public String, Moveable { +public: + bool IsNullInstance() const { return IsEmpty(); } + + HtmlsD& Text(const char *s); + HtmlsD& Quote(const char *text); + + HtmlsD& Color(class Color color); + HtmlsD& Percent(double d); + + HtmlsD& Color(const char *name, class Color color); + HtmlsD& Percent(const char *name, double d); + + HtmlsD& Attr(const char *attr); + HtmlsD& Attr(const char *attr, const char *s); + HtmlsD& Attr(const char *attr, String s); + HtmlsD& Attr(const char *attr, int i); + HtmlsD& Attr(const char *attr, double d); + HtmlsD& Attr(const char *attr, Date date); + HtmlsD& Attr(const char *attr, Value v); + + HtmlsD& Attp(const char *attr, double val_or_percent); + HtmlsD& Atth(const char *attr, const char *href); + + HtmlsD& Tag(const char *tag); + HtmlsD& Gat(); + + HtmlsD& Cat(const HtmlTagD& tag); + HtmlsD& Cat(String s) { String::Cat(s); return *this; } + HtmlsD& Cat(const char *s) { String::Cat(s); return *this; } + HtmlsD& Cat(char c) { String::Cat(c); return *this; } + HtmlsD& Cat(const char *s, int n) { String::Cat(s, n); return *this; } + + HtmlsD& Nbsp(); + HtmlsD& Br(); + HtmlsD& Hr(); + HtmlsD& Lf(); + + HtmlsD(const char *s) : String(s) {} + HtmlsD(const String& s) : String(s) {} + HtmlsD() {} + HtmlsD(const Nuller&) {} +}; + +class HtmlTagD : Moveable { +protected: + HtmlsD tag; + String end; + +public: + HtmlTagD& Text(const char *s) { tag.Text(s); return *this; } + HtmlTagD& Quote(const char *s) { tag.Quote(s); return *this; } + + HtmlTagD& Percent(double d) { tag.Percent(d); return *this; } + + HtmlTagD& Color(const char *name, class Color color) { tag.Color(name, color); return *this; } + HtmlTagD& Percent(const char *name, double d) { tag.Percent(name, d); return *this; } + + HtmlTagD& Attr(const char *attr) { tag.Attr(attr); return *this; } + HtmlTagD& Attr(const char *attr, const char *v) { tag.Attr(attr, v); return *this; } + HtmlTagD& Attr(const char *attr, String v) { tag.Attr(attr, v); return *this; } + HtmlTagD& Attr(const char *attr, int v) { tag.Attr(attr, v); return *this; } + HtmlTagD& Attr(const char *attr, double v) { tag.Attr(attr, v); return *this; } + HtmlTagD& Attr(const char *attr, Date v) { tag.Attr(attr, v); return *this; } + HtmlTagD& Attr(const char *attr, const Value& v) { tag.Attr(attr, v); return *this; } + + HtmlTagD& Attp(const char *attr, double vp) { tag.Attp(attr, vp); return *this; } + HtmlTagD& Atth(const char *attr, const char *href) { tag.Atth(attr, href); return *this; } + + HtmlTagD& Type(const char *s); + + HtmlTagD& Name(const char *s); + HtmlTagD& Name(String id); + + HtmlTagD& Data(const char *v); + HtmlTagD& Data(String v); + HtmlTagD& Data(double d); + HtmlTagD& Data(Value v); + + HtmlTagD& ReadOnly(); + HtmlTagD& Multiple(); + HtmlTagD& Selected(); + + HtmlTagD& Align(Alignment align); + HtmlTagD& Left(); + HtmlTagD& Right(); + HtmlTagD& Center(); + + HtmlTagD& VAlign(Alignment align); + HtmlTagD& Top(); + HtmlTagD& VCenter(); + HtmlTagD& Bottom(); + + HtmlTagD& HotKey(char c); + + HtmlTagD& Size(int c); + HtmlTagD& Size(int cx, int cy); + + HtmlTagD& Color(class Color color); + HtmlTagD& BorderColor(class Color color); + HtmlTagD& BgColor(class Color color); + + HtmlTagD& Face(const char *s); + HtmlTagD& Border(int i); + HtmlTagD& CellSpacing(int i); + HtmlTagD& CellPadding(int i); + + HtmlTagD& Width(double d); + HtmlTagD& Height(double d); + + HtmlTagD& RowSpan(int i); + HtmlTagD& ColSpan(int i); + + HtmlTagD& Class(const char *s); + HtmlTagD& DataFld(const char *s); + HtmlTagD& DataSrc(const char *s); + HtmlTagD& Href(const char *s); + HtmlTagD& HtmlId(const char *s); + HtmlTagD& Lang(const char *s); + HtmlTagD& Language(const char *s); + HtmlTagD& JavaScript(); + HtmlTagD& VbScript(); + HtmlTagD& Methods(const char *s); + HtmlTagD& Rel(const char *s); + HtmlTagD& Rev(const char *s); + HtmlTagD& Style(const char *s); + HtmlTagD& TabIndex(int i); + HtmlTagD& Target(const char *s); + HtmlTagD& TargetBlank(); + HtmlTagD& TargetParent(); + HtmlTagD& TargetSelf(); + HtmlTagD& TargetTop(); + HtmlTagD& Title(const char *s); + HtmlTagD& Urn(const char *s); + HtmlTagD& Alt(const char *s); + HtmlTagD& Coords(const char *s); + HtmlTagD& NoHref(); + HtmlTagD& Shape(const char *s); + HtmlTagD& ShapeCirc(); + HtmlTagD& ShapePoly(); + HtmlTagD& ShapeRect(); + HtmlTagD& Balance(double v); + HtmlTagD& Loop(int i); + HtmlTagD& Volume(double v); + HtmlTagD& Src(const char *s); + HtmlTagD& Alink(class Color c); + HtmlTagD& Vlink(class Color c); + HtmlTagD& Link(class Color c); + HtmlTagD& Background(const char *s); + + HtmlTagD& OnClick(const char *js); + + HtmlsD GetTag() const; + HtmlsD GetEndTag() const; + + void Combine(const HtmlTagD& tag); + + HtmlsD ApplyTo(String s) const; + HtmlsD ApplyTo(const char *s) const; + + HtmlTagD& PairTag(const char *s); + HtmlTagD& SingleTag(const char *s); + + HtmlTagD operator()() const { return *this; } + HtmlsD operator~() const { return ApplyTo(Null); } + operator HtmlsD() const { return ApplyTo(Null); } + String ToString() const { return ApplyTo(Null); } + + const HtmlsD& Tag() const { return tag; } + HtmlsD& Tag() { return tag; } + + const String& End() const { return end; } + String& End() { return end; } + + bool IsEmpty() const { return tag.IsEmpty(); } + + HtmlTagD(const char *s); + HtmlTagD() {} +}; + +HtmlTagD HtmlSingleTagD(const char *s); +HtmlTagD HtmlInputD(const char *type, const char *name = 0); +HtmlTagD HtmlEditD(String name); +HtmlTagD HtmlEditD(String name, int size, int maxlength = 256, + const char *defaultValue = 0, bool password = false); + +HtmlTagD HtmlHiddenD(String name, Value val); +HtmlTagD HtmlHiddenD(const char *name, Value val); +HtmlTagD HtmlHiddenD(Value val); + +HtmlTagD HtmlSubmitD(const char *text); + +HtmlTagD HtmlSelectD(String name); +HtmlsD HtmlOptionD(Value val, const char *text, bool selected = false); + +HtmlTagD HtmlTableD(); +HtmlTagD HtmlRowD(); +HtmlTagD HtmlCellD(); + +HtmlTagD HtmlHeaderD(const char *title, String css = Null, const char *other = NULL); + +//HtmlTagD HtmlFontD(Font font); + +HtmlTagD HtmlLinkD(const char *link); + +HtmlsD HtmlBlockD(HtmlsD html, double width, + double left, double top = 0, double right = 0, double bottom = 0, + Alignment align = ALIGN_LEFT); + +inline HtmlsD& operator<<(HtmlsD& s, const HtmlTagD& tag) { s.Cat(tag); return s; } +inline HtmlsD& operator<<(HtmlsD& s, const HtmlsD& v) { s.Cat(v); return s; } +inline HtmlsD& operator<<(HtmlsD& s, String v) { s.Cat(v); return s; } +inline HtmlsD& operator<<(HtmlsD& s, const char *v) { s.Cat(v); return s; } + +inline HtmlsD& operator+=(HtmlsD& s, const HtmlTagD& tag) { s.Cat(tag); return s; } + +HtmlsD operator+(const HtmlTagD& tag1, const HtmlTagD& tag2); +HtmlsD operator+(const String& s, const HtmlTagD& tag); +HtmlsD operator+(const HtmlTagD& tag, const String& s); +HtmlsD operator+(const char *s, const HtmlTagD& tag); +HtmlsD operator+(const HtmlTagD& tag, const char *s); + +HtmlTagD operator/(const HtmlTagD& t1, const HtmlTagD& t2); +HtmlTagD& operator/=(HtmlTagD& tag, const HtmlTagD& s); + +inline HtmlsD operator/(const HtmlTagD& tag, String s) { return tag.ApplyTo(s); } +inline HtmlsD operator/(const HtmlTagD& tag, const char *s) { return tag.ApplyTo(s); } + +////////////////////////////////////////////////////////////////////// +// from htmlutil + +HtmlTagD operator % (const HtmlTagD& t1, const HtmlTagD& t2); +HtmlsD operator % (const HtmlTagD& tag, const char *s); +inline HtmlsD operator % (const HtmlTagD& tag, String s) { return tag % ~s; } + +////////////////////////////////////////////////////////////////////// + +inline HtmlTagD HtmlBoldD() { return HtmlTagD("B"); } +inline HtmlTagD HtmlItalicD() { return HtmlTagD("I"); } +inline HtmlTagD HtmlBigD() { return HtmlTagD("BIG"); } + +////////////////////////////////////////////////////////////////////// + +HtmlTagD HtmlFontColorD(Color c); +HtmlTagD HtmlFontSizeD(int s); + +////////////////////////////////////////////////////////////////////// + +inline HtmlsD ToHtmlD(String s) { return ToHtmlD(~s); } +HtmlTagD HtmlLinkD(const char *link, const char *target); +HtmlTagD HtmlImgD(String src, String alt = ""); + +HtmlsD HtmlTextAreaD(String id, Size size, const char *defaultValue = 0); + +HtmlTagD HtmlButtonD(String id, const char *text); +HtmlTagD HtmlWarnD(Color color = LtRed); +HtmlTagD HtmlPackedTableD(); +HtmlTagD HtmlFormD(String action, bool multipart = false, String method = "POST"); + +HtmlsD HtmlCheckD(String name, bool on); +HtmlsD HtmlUploadD(String name); + +HtmlTagD HtmlTCellD(); +HtmlTagD HtmlRowCellD(); +HtmlTagD HtmlRowTCellD(); + +HtmlsD HtmlMenuD(bool active, const char *text, const char *url, int wd = 0); +HtmlTagD HtmlDialogD(int width = -100); +HtmlsD HtmlHeadD(String title, const char *charset = "windows-1250"); +HtmlsD HtmlPageD(String title, const HtmlsD& body, Color bgcolor = White, const char *charset = "windows-1250"); +HtmlsD HtmlTitlePageD(String title, const HtmlsD& body, Color bgcolor = White, const char *charset = "windows-1250"); + +HtmlTagD HtmlLineD(); +HtmlTagD HtmlParaD(); +HtmlTagD HtmlCourierD(int size); +HtmlTagD HtmlArialD(int size); +HtmlTagD HtmlRomanD(int size); +HtmlTagD HtmlCourierD(); +HtmlTagD HtmlArialD(); +HtmlTagD HtmlRomanD(); +HtmlTagD HtmlFntSizeD(int size); + +END_UPP_NAMESPACE + +#endif \ No newline at end of file diff --git a/bazaar/Functions4U/bsdiffwrapper.h b/bazaar/Functions4U/bsdiff.h similarity index 82% rename from bazaar/Functions4U/bsdiffwrapper.h rename to bazaar/Functions4U/bsdiff.h index 69de77444..eae6433c6 100644 --- a/bazaar/Functions4U/bsdiffwrapper.h +++ b/bazaar/Functions4U/bsdiff.h @@ -1,5 +1,5 @@ -#ifndef _Functions4U_bsdiffwrapper_h_ -#define _Functions4U_bsdiffwrapper_h_ +#ifndef _Functions4U_bsdiff_h_ +#define _Functions4U_bsdiff_h_ #define ftello ftell #define fseeko fseek diff --git a/bazaar/Functions4U/src.tpp/Functions4U$en-us.tpp b/bazaar/Functions4U/src.tpp/Functions4U$en-us.tpp index be1f95499..d3592f864 100644 --- a/bazaar/Functions4U/src.tpp/Functions4U$en-us.tpp +++ b/bazaar/Functions4U/src.tpp/Functions4U$en-us.tpp @@ -216,6 +216,14 @@ in [%-*@3 token] is found. [%-*@3 pos] is updated to the next char after returned String.&] [s3; &] [s4;%- &] +[s5;:ReadCSV`(const String`,char`,bool`):%- [_^Vector^ Vector]<[_^Vector^ Vector]_<[_^Value^ V +alue]>_>_[* ReadCSV]([@(0.0.255) const]_[_^String^ String]_[*@3 strFile], +[@(0.0.255) char]_[*@3 separator], [@(0.0.255) bool]_[*@3 removeRepeated])&] +[s2; Read a .csv file in String [%-*@3 strFile] where [%-*@3 separator] +can be defined.&] +[s2; If [%-*@3 removeRepeated ]then repeated rows will be deleted.&] +[s3; &] +[s4; &] [s5;:ReverseFind`(const String`&`,const String`&`,int`):%- [@(0.0.255) int]_[* ReverseFin d]([@(0.0.255) const]_[_^String^ String][@(0.0.255) `&]_[*@3 s], [@(0.0.255) const]_[_^String^ S tring][@(0.0.255) `&]_[*@3 toFind], [@(0.0.255) int]_[*@3 from]_`=_[@3 0])&] @@ -1775,4 +1783,4 @@ button can be pressed again so the function can be called twice.&] it opens a new window using, lets say, PromptOK(). This way ChildLostFocus will be called twice: the second one because PromptOK() makes the field to loose the focus.&] -[s0; ] \ No newline at end of file +[s0; ]] \ No newline at end of file diff --git a/bazaar/Functions4U/src.tpp/Functions4U$en-us.tppi b/bazaar/Functions4U/src.tpp/Functions4U$en-us.tppi index ad7135b81..7625e6291 100644 --- a/bazaar/Functions4U/src.tpp/Functions4U$en-us.tppi +++ b/bazaar/Functions4U/src.tpp/Functions4U$en-us.tppi @@ -1,355 +1,356 @@ TITLE("Functions4U. Reference") COMPRESSED -120,156,236,188,249,83,98,105,154,40,252,175,24,61,119,250,171,154,201,201,206,181,150,172,185,55,186,167,151,153,142,219,51,221,209,85,19,223,15,53,89,157,86,38,89,229,116,102,154,163,102,87,213,204,157,9,86,217,55,65,64,20,1,65,16,87,80,20,4,148,29,4,23,112,71,84,54,149,197,133,69,20,217,249,206,1,215,76,205,202,172,174,233,153,47,226,26,25,201,225,156,247,121,222,103,123,159,237,125,15,159,222,170,250,31,255,227,198,181,27,127,118,227,91,254,238,253,12,242,184,250,197,147,134,251,159,214,220,185,243,193,71,213,183,238,126,244,251,255,253,235,15,63,2,225,111,2,240,183,223,191,121,251,131,187,183,111,222,185,245,30,240,223,205,219,55,111,221,189,117,251,206,205,15,110,125,120,231,131,219,183,63,184,113,239,225,147,234,250,250,251,159,62,185,245,193,7,101,160,91,0,208,173,247,239,222,186,249,254,157,15,238,124,112,243,246,251,31,220,2,96,111,221,184,113,235,198,251,183,238,222,188,115,251,131,91,119,239,61,130,212,63,188,255,233,13, -96,248,109,96,248,135,239,221,254,240,198,205,27,55,222,191,121,243,198,237,91,239,223,184,125,247,206,205,155,183,111,1,40,110,189,127,235,230,141,187,247,32,207,30,221,255,244,239,222,251,8,4,184,3,50,117,247,61,128,244,247,0,108,119,238,220,0,176,131,96,119,110,223,188,125,227,214,237,187,55,63,188,251,222,189,207,33,95,212,60,187,140,165,187,223,202,210,251,55,238,213,52,64,158,30,115,84,125,231,163,191,248,241,221,143,110,2,160,239,93,123,239,207,222,7,166,189,115,23,152,236,67,144,163,219,0,216,173,91,239,221,253,240,230,221,59,0,73,119,110,220,186,87,7,249,151,23,53,117,144,167,144,103,13,199,24,106,110,222,188,117,243,163,207,111,190,255,17,64,194,127,252,199,127,92,191,121,231,70,69,82,239,3,180,220,188,1,208,125,235,38,112,15,224,227,253,155,119,63,188,241,225,221,15,110,126,112,227,246,251,119,110,221,125,31,96,253,121,117,93,245,211,99,78,62,191,115,235,163,99,62,62,184,246,193,159,189,119,243,61,64,162,55,62,0,232, -191,251,33,128,224,6,192,4,240,9,8,242,46,240,239,246,7,247,26,142,129,65,56,16,232,195,107,31,254,25,32,164,219,119,111,188,255,225,141,247,239,188,127,247,14,192,201,173,155,239,221,4,4,121,3,228,31,80,195,189,103,181,117,79,171,159,220,255,244,223,126,247,239,127,254,243,127,248,171,127,252,184,234,211,170,127,251,183,155,160,173,252,248,29,64,45,215,239,220,186,126,227,221,170,79,235,111,124,84,245,233,95,252,248,253,143,238,84,253,226,197,179,135,13,53,181,207,234,239,252,227,245,170,223,66,30,67,234,32,207,30,66,238,223,255,247,127,255,225,125,112,220,95,252,248,54,48,170,114,93,245,171,154,250,134,170,218,199,85,143,79,128,170,106,158,85,61,175,126,248,251,234,47,32,215,143,199,0,31,167,115,222,60,153,170,234,183,47,158,61,171,121,246,69,213,227,154,39,144,250,170,234,103,143,170,30,214,62,125,10,124,214,159,76,117,231,163,63,255,171,242,60,119,63,186,247,171,106,96,130,47,127,1,140,125,240,206,67,96,154,134,170,135,95,86,215, -61,248,139,7,239,222,3,6,125,250,227,119,110,92,191,113,29,144,220,187,85,159,215,214,62,185,255,59,96,130,51,144,251,239,156,31,80,6,7,70,156,191,5,224,186,255,187,7,127,1,72,224,118,153,160,251,239,130,243,222,250,168,234,215,207,33,0,79,13,95,66,202,183,171,62,253,243,191,58,25,82,117,255,171,154,134,47,203,143,170,31,65,30,190,168,110,128,60,170,122,94,87,251,5,160,164,170,71,144,199,53,207,128,239,128,48,192,1,191,254,184,234,243,111,192,155,224,218,60,39,22,224,163,108,85,85,159,254,168,234,231,95,87,63,125,254,4,114,239,254,75,247,207,216,120,231,193,15,30,222,123,240,79,15,254,233,239,191,169,170,127,94,7,169,126,84,255,37,4,210,112,189,225,235,134,7,63,120,247,122,213,47,27,170,190,170,121,242,164,170,22,160,249,100,178,83,138,222,121,82,243,123,72,213,23,144,71,53,128,190,234,170,158,213,54,64,158,87,63,122,183,170,204,196,163,218,135,47,64,35,175,122,240,131,203,112,95,47,211,116,251,132,228,43,20,10, -146,88,245,119,128,2,159,0,106,61,211,225,137,6,193,199,63,173,110,120,73,125,215,222,80,153,199,208,223,65,147,215,170,222,6,164,250,57,32,188,71,191,56,111,2,63,41,223,2,76,180,161,172,75,224,26,52,248,115,150,112,191,124,31,192,220,0,136,176,190,188,26,206,217,202,57,140,215,47,66,149,149,245,57,164,234,105,237,163,154,199,53,128,181,128,139,224,21,40,208,206,128,113,128,23,170,6,172,9,180,133,234,103,128,26,175,159,55,147,223,66,26,94,212,129,118,90,247,2,2,218,220,195,234,122,8,72,71,253,139,135,15,33,245,245,215,207,169,239,252,162,2,209,127,220,80,87,97,240,143,80,204,41,142,255,116,245,212,55,212,189,173,94,26,32,95,55,156,220,5,193,223,90,112,231,37,246,147,83,181,252,67,245,211,83,87,4,240,15,152,252,131,31,190,36,180,203,68,248,187,207,42,131,63,59,6,42,203,240,34,214,203,133,248,10,224,249,65,15,126,8,226,1,24,124,94,221,240,229,205,183,148,41,8,115,235,59,192,220,62,213,196,175,64,215,114, -145,137,119,0,19,121,209,80,245,207,181,53,101,39,223,240,101,29,4,82,134,170,191,94,117,133,53,254,45,164,225,31,1,28,117,191,168,125,242,8,82,119,169,155,191,84,122,23,225,222,210,4,203,48,101,169,159,48,115,106,18,128,237,60,3,30,128,230,80,246,255,229,161,85,181,127,0,254,59,49,178,51,232,171,150,216,183,113,116,217,146,250,222,184,185,220,202,203,236,212,1,23,192,210,249,54,174,192,152,242,168,22,136,207,64,188,0,230,130,60,252,61,8,255,234,192,42,200,215,64,34,240,90,71,243,91,72,245,147,243,139,230,219,21,123,30,234,237,4,1,26,218,165,10,5,2,219,147,83,173,30,179,81,30,124,253,157,71,64,162,247,176,161,182,238,27,48,60,130,238,227,56,54,150,193,106,190,248,178,161,234,9,164,161,1,16,19,232,35,234,193,65,15,126,240,224,7,231,196,81,193,115,42,173,178,68,174,18,8,96,179,255,0,248,165,75,13,227,141,221,198,5,36,223,197,82,222,114,209,3,165,193,201,100,39,178,253,41,0,82,3,220,0,215,248,5, -171,168,186,95,13,154,23,144,178,130,105,197,137,149,157,202,234,28,170,107,85,64,70,82,119,78,71,199,131,95,60,123,244,178,77,86,221,111,248,18,240,246,160,225,62,169,175,61,65,126,41,214,235,199,4,254,2,208,19,228,56,179,186,40,48,32,155,250,209,151,181,128,61,254,224,90,213,241,229,143,94,212,67,234,126,116,146,12,213,3,73,213,41,97,231,71,0,9,209,21,106,253,41,96,95,13,144,10,254,159,65,32,207,223,120,201,191,12,248,118,218,4,76,247,254,187,96,250,254,94,213,207,126,254,155,223,254,252,167,63,249,228,231,63,187,127,162,162,50,234,250,19,17,30,139,10,4,185,86,245,16,124,6,234,174,6,200,93,234,158,2,201,33,48,244,120,100,61,104,218,207,32,96,24,172,174,251,230,66,212,252,248,5,224,160,234,33,143,128,148,5,72,107,127,90,11,56,19,112,157,214,252,43,228,55,192,26,120,231,221,215,120,129,159,214,62,5,213,246,118,201,6,64,221,89,18,88,65,240,246,254,224,187,133,197,51,67,47,79,91,127,92,174,156,91,242, -55,239,159,207,219,42,80,149,24,7,128,253,242,212,180,239,85,238,212,220,188,123,227,163,95,3,9,243,131,191,186,117,230,138,1,204,96,162,254,249,19,200,211,250,114,250,14,234,4,176,92,48,15,47,215,72,117,181,79,79,139,144,250,235,175,160,186,9,162,58,46,164,0,84,64,58,89,174,218,26,94,30,249,210,56,160,186,173,126,114,181,207,126,246,168,226,108,126,249,236,146,186,235,218,133,212,231,26,160,162,247,238,156,58,171,242,183,207,170,202,31,199,154,187,136,236,123,75,20,47,115,140,0,4,152,244,129,16,175,146,2,234,168,182,254,6,128,251,127,2,19,222,174,186,113,170,226,143,33,213,117,15,191,4,179,192,11,57,228,99,64,15,245,13,231,61,92,25,121,69,39,159,127,3,172,23,0,95,13,88,251,158,218,0,136,255,18,19,168,250,94,76,224,60,113,87,88,194,5,58,107,42,225,232,113,45,224,80,95,102,238,101,248,159,60,171,8,170,234,15,213,79,202,9,241,163,154,135,21,7,1,206,92,102,246,171,50,181,47,207,80,198,254,154,96,247, -179,147,224,250,43,200,179,47,26,190,188,34,7,56,214,21,144,255,60,184,119,239,204,120,94,133,127,107,247,88,1,190,50,207,171,7,92,23,40,27,144,195,250,147,132,175,254,197,83,240,178,26,40,190,202,245,28,56,168,254,98,88,186,136,249,53,252,127,71,182,191,11,183,32,173,128,184,94,207,235,197,66,233,100,248,121,39,127,106,19,191,124,12,6,232,74,178,8,140,189,16,174,107,128,114,23,196,247,173,128,229,136,242,74,164,255,174,98,127,133,230,219,39,210,62,47,246,83,155,249,105,237,243,111,190,99,117,123,1,199,219,7,229,183,139,56,207,32,95,253,230,73,245,67,200,185,160,243,252,155,75,226,54,32,178,135,79,94,148,189,194,137,148,42,13,180,147,192,221,80,123,50,252,20,229,247,209,46,248,24,210,0,132,249,71,191,126,246,228,21,113,130,2,123,141,24,207,65,126,135,68,254,218,165,72,129,167,117,39,56,207,92,120,195,133,216,92,117,255,157,178,13,129,25,125,89,54,239,86,1,105,41,8,86,85,11,192,129,247,191,170,171,1,93,56,144, -253,212,52,128,29,188,71,16,176,140,45,59,223,74,239,174,226,10,107,31,31,163,61,155,244,130,72,127,249,12,168,130,159,189,248,186,12,82,198,86,95,95,110,135,130,126,189,30,210,80,14,35,96,242,120,173,234,139,186,218,23,207,203,250,170,5,93,255,73,56,175,250,171,255,243,159,164,151,243,255,255,201,117,4,242,124,245,211,178,44,174,126,92,17,208,149,234,189,127,242,229,59,232,25,208,199,9,240,9,137,149,175,21,245,220,63,151,211,29,83,113,210,183,125,75,61,157,186,35,8,80,63,158,75,241,255,223,154,39,143,30,86,215,61,170,127,227,34,225,74,12,223,161,90,168,72,20,156,233,207,255,252,24,241,57,103,82,241,182,247,79,134,3,87,192,168,99,71,84,46,193,30,2,233,48,32,215,227,190,231,163,74,250,3,72,226,171,19,146,142,125,84,165,5,126,138,232,250,253,239,236,134,206,140,29,204,210,42,9,233,73,242,249,242,231,79,234,234,170,191,121,240,215,199,95,255,215,131,31,158,134,218,242,147,207,170,202,31,247,255,250,213,236,241,127,85, -86,194,201,20,128,96,175,72,48,143,189,251,21,79,65,153,252,226,56,105,253,214,12,245,219,105,122,240,195,50,8,164,174,174,182,14,220,112,121,37,174,87,63,171,128,131,210,171,64,213,151,251,209,213,39,221,183,227,237,11,176,243,81,95,105,107,60,126,1,104,187,236,35,79,250,91,231,52,127,73,204,57,175,246,50,130,51,189,191,83,254,126,170,250,119,79,224,78,165,80,118,118,199,8,202,68,1,218,6,219,6,175,244,103,203,66,57,241,135,199,247,206,184,62,129,174,36,15,229,251,175,241,137,223,106,38,255,77,109,2,44,76,192,206,210,255,191,116,92,113,152,111,167,227,151,213,118,227,163,123,191,170,173,46,163,123,240,187,143,171,31,159,169,238,53,77,176,139,16,87,43,231,241,73,119,253,52,152,128,93,64,32,74,156,32,120,231,92,114,89,25,88,238,96,3,41,235,87,181,117,191,47,239,107,254,6,40,244,190,46,71,242,227,156,235,69,67,237,83,160,62,122,8,120,206,111,170,190,128,60,131,212,149,119,1,63,255,230,120,215,239,178,173,190,127,124, -240,151,15,254,242,108,214,119,207,109,157,62,175,171,1,112,3,217,219,147,218,74,209,119,170,84,160,42,168,5,242,232,10,71,64,10,1,169,236,121,60,41,215,7,231,181,11,66,63,170,121,10,121,6,102,31,229,187,21,152,138,106,202,59,73,39,192,224,240,235,85,159,124,9,100,232,199,53,34,144,234,212,148,35,35,184,97,121,198,206,31,106,234,26,94,84,159,196,134,74,1,120,58,223,49,9,149,180,254,60,239,32,210,27,85,239,60,62,107,192,93,102,126,63,2,106,222,135,160,108,203,217,211,133,174,245,69,205,2,130,250,231,23,64,148,60,79,253,113,225,112,201,220,47,158,53,212,60,57,27,7,57,45,78,79,235,132,243,77,169,79,106,63,169,171,174,255,242,111,106,158,125,91,44,254,67,109,205,163,211,86,212,25,216,31,209,157,174,196,222,250,11,91,134,149,78,50,192,77,253,113,42,10,24,33,160,87,144,157,242,140,85,192,148,87,57,190,19,146,128,234,241,167,64,81,222,240,224,157,171,187,50,47,143,189,255,206,165,155,32,47,158,126,94,105,222, -130,39,41,234,171,222,57,43,56,78,234,223,26,8,224,17,158,212,62,44,155,203,241,158,247,203,148,94,82,161,157,204,255,211,39,128,119,61,37,244,50,113,95,24,121,76,230,13,144,204,167,181,127,0,105,121,82,81,246,119,36,208,40,126,147,253,237,227,133,116,186,92,95,221,226,254,164,174,230,233,43,123,130,175,241,93,224,248,63,102,183,175,254,226,14,28,136,238,111,106,193,6,236,113,165,93,17,206,19,200,227,134,178,48,42,187,24,245,207,129,122,176,254,92,39,8,200,108,171,62,174,220,4,139,21,208,84,1,32,0,225,181,170,7,255,15,240,15,252,120,240,79,13,39,23,207,192,139,235,215,175,180,191,218,223,67,158,1,37,251,85,123,163,103,223,1,59,252,22,241,28,163,122,67,17,157,164,73,224,38,239,155,54,11,143,65,26,192,153,94,2,42,55,157,143,159,63,175,61,19,53,216,202,60,94,24,96,84,43,131,158,151,38,48,123,85,249,192,210,179,211,182,221,89,95,240,236,8,64,101,202,74,123,228,188,139,62,203,113,42,136,31,65,0,87,246, -184,6,220,119,2,21,115,121,29,127,230,230,203,243,1,246,14,204,15,120,236,115,19,159,56,16,16,75,85,245,227,134,178,11,6,91,130,149,121,192,234,244,212,103,30,111,165,159,67,11,110,5,212,190,194,235,25,15,149,254,223,133,249,128,187,47,158,63,42,47,184,227,169,203,242,58,55,255,169,223,174,76,114,149,69,253,22,242,7,112,183,1,148,251,155,25,213,149,251,7,231,48,253,113,203,238,13,205,235,82,232,134,218,242,252,151,24,91,37,79,1,20,120,73,115,26,132,185,176,102,207,107,231,84,29,101,204,231,172,239,92,187,23,180,139,251,192,247,186,138,12,0,133,3,225,247,36,213,254,184,230,105,205,147,234,114,234,1,162,56,222,188,175,47,231,188,23,154,207,175,88,198,149,187,7,224,185,179,134,95,213,2,90,121,231,73,237,235,83,184,179,177,23,181,2,194,29,75,165,250,210,86,38,56,224,36,60,157,156,155,169,186,15,168,3,96,177,226,232,207,101,77,87,87,10,96,14,91,255,73,237,177,17,189,243,168,246,197,231,64,214,113,190,95,114,41, -217,47,1,94,164,189,130,228,196,96,42,35,95,211,36,121,86,211,80,127,172,245,179,1,143,171,159,212,159,111,6,150,217,42,23,2,213,79,193,112,125,174,139,123,50,67,213,57,134,193,68,14,144,43,40,8,32,205,253,187,191,187,247,247,127,127,239,227,143,207,186,24,191,60,133,46,79,15,88,199,113,41,14,138,182,114,235,157,47,107,95,212,213,95,171,122,10,56,164,107,39,147,188,123,122,112,233,121,117,93,195,137,57,128,105,253,57,220,229,198,111,237,243,242,214,72,57,41,173,208,4,8,171,130,228,202,77,194,151,198,189,84,2,92,42,225,151,113,95,93,4,156,63,62,116,38,207,151,150,17,48,168,234,254,165,178,171,72,247,212,109,157,105,225,88,50,175,229,255,162,181,92,201,255,223,253,253,199,103,166,8,122,179,178,75,187,246,166,70,121,14,252,162,65,158,121,24,80,167,87,186,31,64,211,47,61,251,14,150,92,117,255,181,150,124,90,209,158,8,254,92,25,123,172,131,19,26,43,223,158,130,61,164,115,13,185,99,42,174,208,210,197,190,236,127,137, -145,3,90,120,231,221,243,197,223,101,22,14,12,58,235,77,84,146,161,147,143,99,109,255,240,53,25,241,57,44,175,233,72,188,0,42,184,215,228,53,87,153,194,241,227,171,141,225,36,213,58,54,135,19,205,254,178,156,191,92,190,172,202,180,188,102,97,129,133,221,219,104,255,254,235,20,113,110,25,188,180,210,78,180,240,55,96,233,120,182,210,94,84,54,176,191,117,125,93,0,43,11,254,197,113,89,245,226,252,22,115,185,48,189,86,117,255,220,243,87,220,253,27,57,246,74,133,123,191,236,120,234,191,172,173,59,201,117,174,191,108,217,229,132,11,180,236,107,160,165,126,83,49,95,240,20,41,16,214,203,71,127,1,41,222,188,117,251,250,157,170,255,253,249,213,174,23,40,105,107,174,60,162,5,62,250,172,234,193,189,123,224,197,137,17,86,32,222,174,0,174,127,169,255,92,174,94,238,191,49,134,171,166,5,28,247,139,135,149,68,172,66,106,101,71,181,60,240,210,84,236,229,44,236,13,232,190,86,206,140,42,33,0,52,238,74,129,249,228,27,64,61,224,60,87,38, -25,32,197,63,3,146,225,43,68,11,62,42,139,22,188,56,19,109,249,219,159,94,180,175,78,123,133,104,203,3,255,4,162,5,231,121,125,166,249,179,178,99,250,201,35,176,71,116,150,194,29,127,126,107,238,121,30,250,53,121,220,203,76,93,120,88,7,30,203,126,37,198,93,204,78,31,221,63,151,146,151,1,206,167,171,23,90,124,245,181,149,122,16,40,228,191,172,174,63,119,10,241,172,29,243,8,168,242,26,46,86,132,229,110,222,73,135,2,240,148,117,96,3,0,192,11,184,142,175,142,33,203,165,255,23,117,213,207,191,172,170,254,186,166,254,108,35,178,10,242,164,252,166,75,125,101,226,227,119,95,78,161,65,10,0,87,92,243,244,197,211,99,74,254,229,69,53,80,50,54,124,115,70,75,165,80,168,62,22,204,213,5,29,216,152,248,201,195,135,229,67,118,111,208,227,189,0,240,102,217,221,137,252,207,231,116,103,239,107,148,49,1,18,7,77,176,250,97,3,40,148,250,23,159,215,3,204,188,0,111,159,14,124,90,11,44,85,192,137,214,213,126,93,243,180,186, -18,180,30,214,212,156,131,123,57,217,0,161,78,203,239,227,3,163,229,74,248,57,164,14,220,223,186,86,169,206,192,240,248,21,80,130,29,239,140,64,142,131,218,57,136,39,181,95,157,64,84,78,69,156,145,247,184,166,174,254,244,52,234,73,154,114,58,195,203,40,79,6,156,34,188,64,242,79,158,157,73,227,244,124,235,51,112,252,43,2,169,125,86,222,96,173,175,125,10,185,74,0,231,78,91,86,61,248,129,17,85,247,229,139,250,42,35,11,32,23,64,98,164,2,148,25,85,85,15,235,140,93,0,138,207,235,140,234,39,70,9,4,60,67,91,95,117,190,104,3,64,127,82,93,6,253,53,164,2,250,15,0,228,11,240,180,98,25,238,197,19,8,0,117,69,63,247,151,245,191,1,205,255,69,53,184,2,30,188,243,85,217,209,94,189,167,122,97,120,217,180,202,16,159,85,125,85,113,79,149,173,155,87,171,207,227,147,212,39,187,32,229,188,178,186,234,249,25,174,51,17,93,221,255,252,45,228,57,120,56,227,91,119,168,46,93,18,101,208,215,47,134,171,119,154,30, -31,183,32,174,120,92,119,140,253,165,83,228,229,155,245,47,55,187,202,134,114,225,4,112,185,11,81,182,153,19,87,119,140,239,228,32,29,184,41,80,238,217,214,60,61,59,76,89,1,59,30,81,201,92,174,220,222,123,69,114,101,53,95,59,167,236,63,74,106,175,68,169,11,66,187,252,233,5,153,221,186,90,92,229,6,216,183,75,170,60,236,53,114,170,244,209,94,149,210,213,237,235,231,144,135,53,224,46,78,229,144,208,101,47,217,253,45,164,225,19,200,211,231,39,167,210,191,229,236,249,217,208,179,125,131,191,133,52,84,98,213,201,235,103,13,192,160,227,125,159,227,29,31,112,115,227,226,146,184,146,228,191,175,46,111,98,94,217,111,255,184,230,11,96,137,127,242,234,242,6,103,125,82,206,164,254,250,130,182,202,47,183,130,234,186,83,245,9,184,175,123,73,143,16,196,9,216,71,101,200,75,205,167,227,156,234,226,105,186,47,158,129,241,175,114,196,161,250,222,241,169,235,179,19,153,127,121,254,68,102,245,253,235,160,179,171,28,24,253,3,228,165,177,55,46,140, -44,239,159,189,140,237,175,110,190,50,230,25,228,139,106,16,217,85,75,229,39,128,95,173,254,2,2,202,233,218,31,33,170,83,129,84,29,35,124,69,72,215,170,46,220,248,252,210,150,93,117,5,248,92,133,83,125,225,252,244,231,87,158,162,188,200,199,159,152,149,151,110,92,18,16,174,224,237,218,25,99,231,217,124,248,230,108,254,87,115,250,210,141,71,223,133,245,107,103,124,159,151,194,163,43,165,240,188,246,171,91,127,212,202,62,227,28,68,117,213,130,174,250,109,117,77,253,153,103,173,46,247,79,111,93,63,223,15,175,255,151,186,227,86,206,229,100,222,254,254,200,188,253,86,100,222,126,13,81,119,190,63,162,238,188,21,81,119,174,34,234,233,217,222,250,39,103,251,54,47,93,126,31,126,252,164,208,172,60,123,181,54,45,55,181,46,45,169,175,130,56,49,230,183,3,249,252,237,65,46,247,42,96,251,235,228,12,234,31,225,87,222,72,1,255,87,23,63,60,239,247,222,14,228,114,207,248,173,234,123,107,223,248,180,250,235,255,46,75,169,250,235,255,182,234,187, -84,23,213,95,127,47,75,233,77,20,240,127,117,241,253,47,165,111,83,223,91,47,165,191,129,52,124,5,129,252,137,34,211,105,207,225,120,214,183,86,23,192,251,219,139,242,213,61,156,55,1,2,140,233,91,90,30,32,49,96,249,241,121,133,153,115,155,53,23,100,15,98,186,50,213,125,246,5,216,116,125,116,251,189,27,223,99,117,114,134,244,229,204,5,40,93,95,74,102,65,38,78,127,78,226,209,163,250,11,204,157,189,69,3,66,86,53,84,255,190,188,87,89,93,62,253,88,110,144,214,131,21,238,57,25,220,40,115,126,251,189,187,6,213,85,60,255,172,166,190,161,250,217,67,200,127,177,3,249,93,249,221,166,10,41,111,109,135,95,95,245,42,237,107,96,190,249,14,48,95,95,245,171,20,175,155,231,214,165,174,227,209,49,175,85,239,124,250,217,151,13,13,207,31,220,123,240,163,7,63,2,86,254,245,175,106,126,95,243,28,124,241,249,193,245,218,186,47,30,252,8,252,254,224,71,63,127,241,240,73,205,35,72,245,179,7,191,59,1,253,172,10,114,114,19,60, -26,124,172,242,147,83,195,21,153,84,174,1,94,223,45,91,194,233,195,91,231,30,2,4,190,169,113,252,166,22,220,15,254,221,131,191,254,164,252,18,195,181,75,239,254,87,24,199,239,62,59,38,226,179,19,106,238,255,245,9,226,7,63,172,104,226,249,85,26,127,35,224,63,177,26,79,14,174,189,244,50,247,173,43,125,215,119,90,199,255,119,117,159,131,249,215,63,157,71,120,123,218,254,123,120,145,147,75,64,84,239,94,123,157,71,57,189,254,215,215,120,151,114,100,252,47,139,59,151,110,155,86,162,245,127,91,19,253,30,3,80,53,200,232,127,78,212,184,160,215,63,121,200,120,107,189,254,233,99,199,37,10,120,107,127,255,235,71,143,42,199,241,174,222,74,4,134,92,117,228,238,124,158,121,117,62,93,222,68,172,125,116,229,239,40,252,252,15,96,169,242,122,34,192,49,223,3,21,16,0,205,149,123,111,224,89,239,215,208,114,122,218,250,100,220,219,208,115,158,142,58,16,193,217,241,241,242,14,119,153,178,211,51,16,117,224,47,16,64,158,60,6,57,168,252,214, -192,235,8,255,164,246,183,213,143,78,15,135,188,238,64,105,121,228,107,14,130,148,141,233,42,218,43,150,6,158,181,126,4,249,162,14,2,57,191,185,13,176,82,87,13,132,137,103,87,188,221,250,73,237,207,32,95,188,33,137,192,200,55,35,241,229,215,5,94,161,243,152,164,139,116,30,19,127,142,206,75,118,232,254,22,60,71,2,190,255,118,217,54,221,249,223,146,105,248,229,179,95,212,157,255,201,60,240,21,145,151,221,212,197,155,223,217,75,253,238,179,223,66,30,150,125,68,229,243,204,69,252,174,252,230,214,9,45,87,190,3,80,38,227,179,99,114,206,65,31,159,122,124,92,6,190,242,29,128,111,129,174,253,252,159,1,170,174,248,117,178,135,13,21,173,0,74,169,46,83,15,106,226,49,104,218,149,151,41,79,79,243,151,127,116,237,220,207,193,84,176,86,221,7,127,36,242,252,43,161,213,245,207,193,251,117,224,153,132,139,111,35,254,207,170,31,255,184,230,105,245,23,144,123,183,111,189,247,193,15,111,221,184,253,62,20,129,135,91,96,208,147,191,52,186,109, -119,12,125,20,88,201,53,245,23,74,171,107,17,114,36,18,237,62,176,103,70,99,68,222,230,216,17,131,5,219,159,152,128,234,210,193,24,74,99,155,79,138,91,162,204,32,215,168,23,201,213,185,241,136,164,59,52,107,205,46,247,35,227,112,131,176,157,67,205,89,215,58,215,38,104,162,105,182,156,17,153,19,218,128,171,21,182,188,124,181,9,222,4,174,154,108,229,199,145,201,202,99,118,111,229,177,104,176,242,216,118,252,120,174,179,242,248,63,29,143,199,150,67,172,148,50,250,146,92,91,200,228,138,37,87,166,191,252,60,150,82,15,114,245,58,178,40,150,79,206,120,2,186,50,92,81,151,210,145,71,247,176,152,200,28,81,104,203,121,55,180,220,160,94,67,103,102,35,214,105,177,162,168,79,142,141,173,46,11,188,99,7,78,135,197,83,10,175,120,178,91,61,229,105,247,208,138,84,18,154,142,88,6,142,50,73,177,34,173,134,134,211,12,164,99,124,153,92,26,141,207,109,105,115,71,115,246,50,153,139,135,237,217,96,105,65,93,92,93,95,213,28,110,59,184,125, -59,226,66,106,82,81,154,140,88,185,26,86,100,110,15,64,151,218,200,201,104,198,124,8,26,224,102,39,90,180,88,58,23,17,232,92,177,82,64,4,132,136,118,196,59,196,43,206,23,249,69,2,38,196,221,159,45,179,89,144,184,132,60,144,18,207,180,123,40,53,64,196,112,152,237,155,43,203,188,233,81,240,177,60,69,62,128,25,198,44,59,157,195,218,20,66,157,79,143,122,184,217,197,121,113,218,10,155,79,28,232,61,217,141,206,55,149,247,34,120,147,56,29,109,26,110,42,223,112,56,216,107,228,238,105,182,16,120,230,25,180,97,82,101,176,84,211,132,205,82,54,20,129,156,57,53,104,96,203,65,169,143,109,54,81,143,229,213,41,166,17,202,252,208,35,3,45,155,72,121,132,6,220,207,217,132,130,138,62,221,147,20,81,11,31,196,111,43,99,141,204,113,202,88,109,150,253,138,249,49,39,202,88,35,115,59,101,172,115,194,237,50,86,26,1,91,198,26,25,216,42,99,157,19,86,176,10,109,216,50,86,81,139,176,140,21,64,90,198,42,180,89,203,88,39,104, -109,101,172,83,131,251,101,172,194,49,119,25,171,141,166,42,99,165,136,58,202,88,91,54,91,202,88,109,185,21,0,171,103,205,29,10,105,122,71,50,11,86,120,112,89,27,30,238,205,168,178,75,249,177,158,226,248,48,77,7,149,72,149,212,77,31,113,213,48,175,166,162,74,5,150,141,218,182,66,180,147,216,112,85,198,49,191,74,239,73,236,11,253,6,249,138,54,170,211,163,176,169,144,113,211,182,65,239,105,140,184,215,53,73,220,118,75,203,216,30,103,62,188,180,215,85,136,202,147,182,85,188,122,155,235,198,76,237,38,81,126,25,115,79,182,165,64,164,155,198,198,149,220,131,141,62,234,210,110,98,81,140,72,187,253,249,45,158,123,68,203,228,120,176,228,198,21,4,111,22,191,189,47,236,145,171,91,87,228,214,212,50,57,96,64,39,80,232,66,120,42,154,206,15,69,149,82,127,204,115,24,233,97,250,200,7,225,197,113,111,44,194,58,10,51,52,25,149,121,32,191,36,109,35,45,135,112,228,173,5,164,52,134,217,110,94,28,99,168,124,135,225,5,117,127,247, -32,102,123,149,156,106,117,34,17,173,93,250,161,46,228,8,123,16,185,98,92,10,209,76,90,182,92,208,56,34,53,228,189,139,5,145,142,196,197,180,119,90,51,196,3,135,23,187,228,94,213,245,246,40,250,121,42,102,161,155,103,28,212,136,133,230,24,61,138,245,217,211,220,188,111,173,81,187,190,60,100,13,162,67,28,41,10,141,152,226,83,119,194,187,67,42,141,140,211,178,70,154,58,218,211,181,182,113,86,241,37,125,9,183,133,112,185,53,179,121,35,85,218,46,12,41,214,37,235,14,119,208,58,189,155,27,76,149,82,27,58,238,24,97,147,12,15,134,186,73,70,3,41,238,111,25,218,79,53,77,143,206,108,132,196,137,100,44,192,52,112,53,24,81,191,17,31,153,156,72,117,167,82,86,162,157,223,196,84,216,208,147,171,11,205,184,126,161,166,63,186,33,84,20,73,219,182,156,152,141,52,173,46,178,145,229,191,144,220,59,100,179,104,248,61,195,142,28,138,65,33,153,55,187,103,115,24,29,5,234,240,169,8,123,72,235,80,31,63,2,55,101,19,208,253,148, -66,181,75,98,15,232,119,102,84,171,162,117,194,244,252,4,166,209,128,232,153,231,39,236,68,104,152,207,30,95,108,153,229,181,68,23,86,215,36,254,217,213,214,177,0,98,137,176,98,28,156,95,165,198,139,58,140,223,217,52,137,192,240,140,145,236,44,92,190,15,77,111,176,134,204,80,28,175,133,207,145,174,53,170,122,219,200,150,37,210,70,87,0,137,90,11,46,53,206,244,202,123,119,27,201,56,143,108,3,173,159,239,199,244,227,229,20,30,5,134,75,47,107,101,112,120,66,207,227,231,230,155,15,218,168,190,245,237,174,33,62,21,57,213,37,246,29,96,72,43,6,97,92,37,157,245,111,98,219,165,155,29,242,52,65,16,78,8,154,197,140,1,145,67,132,208,228,59,68,75,8,66,191,210,130,164,242,39,74,180,116,211,190,127,37,182,166,181,120,247,185,132,18,76,30,247,67,185,133,244,210,54,11,35,29,107,229,12,247,82,169,190,249,81,204,0,142,107,88,229,184,180,51,249,93,101,83,16,240,186,12,245,240,134,45,150,25,210,153,144,48,184,85,25,130,34, -205,251,98,33,179,107,22,183,63,68,199,224,219,87,144,58,35,212,73,153,89,240,152,177,36,108,210,73,34,118,248,3,35,135,153,80,235,184,106,218,235,133,133,231,150,187,116,200,112,31,71,107,156,43,142,138,104,225,233,88,216,190,63,59,25,50,160,228,46,121,118,145,96,22,204,233,9,209,17,138,60,72,116,196,76,176,5,202,142,21,27,111,242,81,228,217,165,130,10,69,94,78,103,130,17,130,0,35,194,247,91,34,71,27,242,200,60,12,198,31,12,72,130,60,140,115,32,173,102,204,20,10,59,69,234,36,5,141,192,160,198,112,109,188,1,186,212,218,66,141,11,52,58,255,30,70,67,25,154,192,238,44,204,39,2,68,170,1,137,233,98,64,137,46,180,140,103,200,38,214,154,55,39,122,213,78,47,191,200,219,149,141,142,133,23,8,51,233,5,220,78,44,78,60,204,110,57,232,165,94,148,217,190,203,194,162,139,158,61,150,115,184,91,7,155,17,242,164,12,50,133,229,68,225,48,134,130,136,24,114,202,4,202,109,158,142,161,231,35,22,157,254,133,190,69,81, -177,53,132,52,227,182,144,251,71,68,126,177,107,170,104,177,80,180,44,99,162,9,87,218,28,179,216,76,221,61,37,5,174,79,140,209,42,66,205,37,139,56,189,150,147,236,35,125,107,176,113,122,100,29,163,225,208,240,105,190,105,153,20,242,115,172,138,140,177,37,39,111,19,246,245,47,136,182,213,99,5,54,35,1,199,104,147,172,41,56,125,198,211,17,234,15,143,182,10,39,58,120,69,63,170,19,153,205,243,132,225,57,174,202,67,160,192,35,147,206,96,63,206,9,133,25,163,42,88,187,81,46,28,136,34,83,204,254,232,224,114,215,110,152,216,109,100,249,198,14,233,71,19,110,237,186,80,32,246,216,117,198,109,228,78,99,36,197,112,235,8,123,113,30,199,210,235,79,76,83,48,170,56,212,52,11,79,105,44,105,70,186,7,218,158,48,227,9,172,177,189,185,57,190,52,105,95,75,11,212,112,158,65,17,147,141,226,122,231,41,8,204,40,174,53,215,129,132,15,6,218,180,141,19,208,73,138,218,226,106,179,77,47,111,79,138,250,228,17,187,27,195,52,240,134,134, -96,61,46,167,185,145,182,206,132,6,34,7,188,17,242,138,104,34,189,16,12,79,180,237,174,39,161,71,221,37,81,210,217,59,203,138,140,78,71,103,15,251,184,176,56,109,204,177,201,167,176,112,142,46,40,143,135,33,71,227,115,225,78,131,28,185,32,151,114,160,195,35,27,173,6,65,107,70,62,21,14,96,84,130,21,26,134,107,40,48,138,168,5,91,129,220,188,187,216,57,18,232,160,208,29,56,35,130,95,60,244,144,145,86,67,47,203,10,7,86,23,197,24,102,44,99,120,241,53,168,31,62,141,86,74,187,209,131,104,186,58,176,201,163,34,49,58,36,14,69,67,174,146,195,121,109,7,82,215,44,133,38,226,68,43,142,210,97,31,145,204,88,248,198,78,29,194,224,119,100,163,187,193,246,195,86,213,114,202,18,238,211,26,183,230,60,70,32,98,152,92,56,24,127,105,110,93,201,240,165,146,246,166,14,12,165,153,66,209,243,16,232,22,45,145,106,218,76,177,240,12,208,64,5,91,172,152,91,206,215,59,6,229,240,232,202,120,72,223,235,164,53,82,97,40,170, -31,186,18,64,54,11,164,249,46,168,78,39,133,250,17,40,167,222,182,187,225,206,197,188,76,216,164,90,236,155,30,156,91,69,18,92,78,131,155,66,181,97,58,116,146,62,152,192,151,240,13,35,140,70,210,46,82,198,240,243,88,124,238,64,111,183,1,155,247,233,195,78,86,135,100,155,217,210,142,66,173,6,227,20,124,210,204,160,77,96,58,7,9,56,50,33,34,239,197,50,45,35,72,61,213,217,21,217,165,33,164,157,97,124,169,109,222,80,236,36,118,186,140,118,217,60,113,91,46,77,184,176,133,46,56,122,84,238,99,145,34,145,78,250,208,66,103,27,117,20,227,49,246,198,119,48,24,20,55,182,153,95,66,122,250,87,214,195,216,188,135,238,201,167,91,217,125,253,66,31,116,37,46,196,240,124,155,84,100,163,142,69,231,225,121,148,120,83,15,76,39,37,142,107,233,217,20,77,169,93,60,224,8,186,37,139,230,61,92,100,200,114,212,43,151,66,213,116,216,132,31,135,141,135,152,234,49,45,122,29,182,208,222,31,109,159,105,222,154,115,41,12,177,2,167,41, -145,178,139,90,18,217,37,139,190,19,77,26,110,29,192,137,152,83,172,77,30,10,110,102,68,4,242,109,44,197,1,21,132,169,228,168,116,51,128,103,140,241,97,89,154,168,87,103,83,76,111,102,220,33,77,223,80,251,116,112,197,225,64,192,163,99,157,171,113,131,123,60,196,53,123,181,164,197,237,56,51,72,99,237,224,122,157,81,55,98,103,129,50,196,74,114,108,123,138,160,66,86,8,219,50,123,70,93,139,12,135,133,162,41,1,106,183,192,231,129,98,227,135,14,218,170,207,40,27,69,236,173,228,102,228,97,37,111,212,130,66,136,224,135,37,163,199,193,164,147,58,186,39,44,195,36,110,62,183,201,137,196,172,35,237,19,248,12,166,143,95,92,28,34,204,177,6,53,8,76,232,112,180,11,62,222,33,146,42,217,11,43,56,178,160,195,14,45,180,224,113,67,219,211,62,63,119,7,215,131,198,218,14,55,48,118,169,203,181,185,47,192,243,117,80,231,172,174,121,76,219,137,164,234,180,135,40,58,102,171,127,74,16,82,6,209,12,19,116,95,145,96,204,65,11,83, -227,153,116,110,200,60,10,132,108,99,6,22,77,172,122,87,13,235,107,222,53,251,56,180,63,214,222,31,107,214,174,173,151,70,139,148,62,85,135,190,153,121,228,213,238,19,40,208,180,55,116,216,68,29,216,237,219,92,164,173,210,59,134,163,94,183,226,240,168,127,163,216,50,185,220,81,96,165,120,74,131,147,222,102,177,32,125,28,232,40,170,61,136,247,203,232,81,148,181,121,119,21,159,247,81,96,57,94,124,54,94,100,80,214,26,89,198,195,117,147,14,179,209,52,48,158,51,47,43,26,9,44,194,34,75,31,17,97,92,246,41,171,109,199,182,109,213,35,14,160,253,109,104,153,58,26,193,108,145,16,33,168,149,61,181,75,19,140,96,169,84,73,247,146,112,154,74,66,154,58,124,8,152,50,100,12,82,141,203,244,0,21,131,135,227,50,60,186,78,8,151,71,11,26,226,64,24,54,210,188,103,30,179,234,90,113,116,239,140,116,215,42,62,138,123,177,91,91,193,64,98,100,152,220,154,97,81,5,100,123,211,193,0,52,48,171,51,240,59,112,218,221,62,140,40,69, -235,152,128,183,14,241,84,52,45,89,233,146,227,59,246,125,205,45,147,83,241,241,41,254,230,145,102,165,72,19,248,247,80,253,233,0,52,128,154,194,152,165,37,35,218,28,80,203,249,186,73,31,108,6,6,195,235,22,25,222,53,88,174,148,37,206,101,211,89,163,170,144,110,108,84,9,74,54,111,140,169,133,142,99,253,68,122,182,144,201,30,109,173,174,55,47,199,0,161,142,229,215,11,36,248,164,194,171,29,94,207,103,178,135,241,69,247,22,18,105,42,185,105,84,66,122,122,135,13,11,117,146,250,199,14,73,71,131,78,24,207,119,184,30,50,44,113,250,16,65,2,39,75,49,109,171,164,210,126,22,13,182,18,233,17,9,68,233,46,1,140,233,207,122,198,23,167,226,8,46,26,157,142,192,44,83,60,182,40,234,101,236,3,118,12,247,57,227,94,140,145,48,217,234,241,12,151,120,18,41,37,128,157,137,162,67,178,33,146,14,142,84,102,251,116,204,129,48,138,179,70,245,39,105,78,22,106,25,26,52,174,30,109,201,54,54,89,64,254,60,215,106,194,109,98,186, -150,56,216,56,242,208,215,174,15,145,40,147,238,197,249,193,238,214,206,88,26,23,29,237,72,244,135,147,46,113,42,128,235,232,181,218,152,102,186,115,216,54,114,180,70,156,166,249,6,221,107,2,31,28,142,105,238,34,225,182,228,124,75,215,24,138,111,92,194,48,168,141,198,160,88,210,139,115,249,233,225,173,124,235,168,174,209,228,115,66,19,186,214,13,35,131,138,78,116,7,133,226,41,212,48,138,68,215,147,140,163,233,201,49,153,28,239,13,12,82,52,132,165,80,127,199,10,210,16,128,5,68,133,195,92,42,137,57,42,230,28,248,92,188,180,188,171,176,25,135,20,250,82,214,56,206,45,228,86,21,49,178,119,188,148,241,22,87,151,99,218,66,206,187,167,0,62,152,97,140,162,201,219,216,195,197,167,162,249,61,117,62,183,199,83,123,5,81,44,28,205,129,89,17,33,149,200,66,1,114,56,54,203,30,227,0,190,35,229,22,181,140,37,182,45,36,182,70,46,110,71,56,251,2,235,12,15,107,118,64,228,149,104,211,242,93,134,12,193,22,152,150,80,179,72,105, -192,101,38,116,69,86,136,7,125,252,52,113,2,199,109,10,160,151,230,243,109,108,22,55,156,81,81,90,15,240,172,108,120,219,157,58,236,203,117,241,187,91,4,125,195,20,187,30,26,218,0,36,239,203,198,183,114,227,178,113,29,42,214,56,185,198,51,175,217,148,33,225,164,85,63,55,20,223,79,17,68,131,129,28,235,32,224,18,78,121,196,182,97,129,169,105,177,123,90,151,132,27,103,66,153,180,100,75,24,132,91,20,40,4,113,102,115,189,104,152,162,26,96,68,140,5,166,192,119,96,22,9,76,32,126,240,138,72,44,181,35,140,153,224,115,91,53,51,197,54,56,203,96,110,28,163,140,116,172,144,8,76,19,79,210,141,101,4,224,62,18,189,55,12,147,49,210,104,36,179,32,11,107,176,161,13,75,27,44,227,16,72,156,83,234,153,129,142,133,21,21,34,78,234,220,208,78,45,174,175,28,114,154,216,34,94,63,106,60,62,71,192,180,165,15,55,166,48,174,185,124,103,200,193,28,199,243,198,153,225,85,15,185,155,189,94,42,144,200,141,48,42,70,131,162,241, -147,83,5,114,2,191,20,43,88,0,113,54,2,158,24,174,90,210,244,180,29,226,83,28,230,142,43,30,97,250,226,98,77,108,199,207,113,228,141,114,254,214,126,107,96,135,233,162,187,130,133,9,243,130,62,152,69,74,219,16,29,120,62,145,130,146,114,244,105,100,161,131,220,166,41,225,225,8,145,57,222,205,118,7,199,250,134,132,7,22,50,20,166,176,226,116,189,190,97,118,124,104,98,102,213,19,146,201,102,150,173,3,72,197,234,44,142,185,160,153,110,87,198,155,252,51,248,9,88,63,105,210,78,203,21,45,38,118,84,186,149,194,89,160,14,228,62,211,222,191,108,68,117,81,24,56,150,100,23,23,105,130,241,167,105,196,61,243,180,21,135,159,60,104,161,97,38,187,121,20,60,156,152,150,165,227,91,164,140,221,96,110,167,226,56,162,246,233,109,91,91,71,33,195,19,69,136,80,252,208,8,107,133,231,79,145,195,186,230,8,138,11,53,244,166,36,68,145,18,195,59,26,198,79,198,248,61,77,8,75,218,186,79,208,9,176,168,28,102,102,32,54,180,124,180,34, -11,160,150,91,164,24,40,98,66,105,157,243,5,177,22,105,162,89,198,159,72,140,241,18,197,35,33,26,110,242,207,96,15,197,112,90,60,166,32,123,7,162,218,110,207,90,1,134,70,135,8,48,77,103,58,223,182,60,54,54,128,20,22,98,114,163,13,179,44,69,81,60,26,70,162,221,141,38,56,135,2,152,113,90,123,9,133,84,77,233,3,69,242,24,117,170,155,33,147,121,118,7,85,150,161,29,233,8,90,49,160,150,50,141,230,209,182,244,208,65,139,127,118,114,86,89,26,195,240,145,166,20,181,111,104,123,197,109,228,56,58,219,251,41,36,66,63,102,99,112,32,103,38,31,98,96,75,80,114,48,60,224,92,219,231,43,125,190,182,165,37,141,102,199,179,174,77,4,150,236,225,140,4,187,13,71,50,253,68,2,140,138,66,211,227,67,253,219,30,99,193,63,108,228,18,160,165,9,193,1,101,180,53,25,150,83,102,24,8,237,180,83,59,159,105,214,18,149,71,102,227,6,163,107,181,155,142,221,63,12,207,76,39,227,141,219,18,158,79,22,205,91,103,39,151,194, -172,3,252,176,136,111,108,31,65,170,3,139,178,85,235,242,30,63,20,10,105,21,226,18,33,56,236,118,13,12,241,140,2,157,115,100,209,191,198,154,10,181,132,161,109,173,50,67,116,178,13,133,26,36,17,4,251,237,65,167,169,169,133,42,90,151,80,168,83,170,245,68,113,1,165,199,99,122,251,163,67,86,166,50,214,149,75,114,49,243,210,196,33,111,112,150,170,240,162,36,251,115,118,6,57,96,141,101,188,9,69,59,110,52,142,149,8,205,4,246,32,125,16,202,234,131,226,227,26,234,90,75,39,62,65,156,235,212,22,29,59,49,138,92,49,100,227,96,74,35,195,51,185,230,150,140,14,138,73,161,124,30,100,111,169,96,105,94,107,222,70,16,88,6,12,28,61,239,150,118,160,200,27,43,134,125,104,231,145,67,234,99,16,118,114,174,54,68,34,9,243,202,201,66,140,64,111,231,194,113,24,145,61,43,75,239,41,122,51,197,67,124,90,186,119,144,46,245,37,215,150,16,237,120,100,26,57,199,231,96,108,109,172,241,77,170,41,186,71,152,158,110,157,215,143,246, -4,57,40,222,126,119,187,75,56,70,106,31,149,144,160,129,126,165,224,64,137,159,105,15,141,118,132,116,36,158,28,165,219,148,98,80,187,86,101,129,161,38,246,132,182,154,5,189,246,94,215,134,54,153,211,225,149,219,49,103,168,153,172,17,64,225,78,154,189,155,205,34,25,134,199,146,48,29,85,149,84,69,8,59,243,190,205,35,203,162,210,132,179,19,186,87,211,212,35,19,209,60,220,9,95,209,205,66,213,89,121,110,173,199,188,4,235,192,230,146,42,204,128,196,157,14,202,216,225,133,33,201,188,143,181,186,189,67,103,181,182,14,102,230,115,227,249,126,45,57,94,208,108,240,136,134,86,109,124,190,141,218,189,57,75,109,148,38,58,146,77,157,56,84,19,124,100,76,186,159,200,178,83,3,189,124,137,201,179,48,51,62,211,28,142,226,69,157,157,114,234,186,81,161,84,230,88,0,97,113,41,101,120,221,180,143,108,156,106,214,28,53,66,59,120,121,214,232,120,182,44,120,249,170,13,83,234,30,238,75,99,229,219,222,56,130,163,234,103,232,59,5,27,177,181,93, -236,65,95,0,38,131,45,19,157,82,212,208,212,194,66,72,0,179,118,78,168,147,226,240,126,223,12,61,114,160,196,238,82,36,226,66,179,210,221,202,90,195,232,25,242,217,33,156,16,67,177,72,124,9,44,3,15,167,155,226,196,162,45,70,217,63,208,13,49,5,75,113,40,114,73,37,207,13,52,251,29,150,62,142,148,46,109,110,23,98,169,184,85,124,219,166,127,29,47,244,77,165,76,142,69,163,122,124,51,218,153,223,193,122,219,44,93,253,51,128,252,113,99,72,111,106,71,78,12,15,121,248,238,166,73,52,6,31,55,19,7,130,71,1,223,40,87,146,119,6,233,225,208,240,128,211,159,30,162,192,73,238,33,146,189,37,48,98,224,27,145,139,34,46,108,177,87,132,100,42,167,54,41,107,44,179,219,63,41,114,57,211,153,52,202,177,53,140,148,181,246,56,224,205,72,138,135,55,227,30,197,111,118,241,249,122,163,97,189,117,197,157,16,30,141,181,4,40,242,49,98,136,210,53,14,221,91,159,37,240,204,190,189,77,94,71,201,195,238,107,214,198,82,112,81,54, -58,31,16,247,64,205,243,67,118,170,201,100,67,35,86,173,171,158,164,98,2,138,166,170,215,2,51,88,192,72,49,109,240,72,79,180,180,221,68,242,9,52,104,176,201,97,203,109,196,104,132,116,104,37,215,225,225,46,36,218,92,135,8,184,138,73,165,141,237,176,2,118,40,13,17,27,218,24,176,237,98,231,183,149,71,60,204,4,12,134,138,74,148,99,51,241,109,172,187,83,107,14,233,166,13,131,45,92,133,161,81,151,65,192,77,188,238,89,154,104,97,150,182,177,177,18,116,175,246,36,194,210,206,108,209,151,29,111,201,111,238,243,155,90,249,252,34,59,31,117,239,27,155,92,7,254,121,165,125,140,232,179,216,162,142,182,32,106,72,135,113,101,179,58,218,65,184,199,216,122,104,118,68,59,14,150,20,116,216,56,220,165,219,132,201,134,204,227,90,252,248,172,29,62,208,234,78,82,68,244,184,69,202,83,246,9,151,38,233,201,176,19,30,24,138,64,73,4,140,76,86,104,108,86,242,194,98,7,178,187,201,140,159,66,205,176,181,250,100,212,26,194,226,105,190,77, -24,76,3,59,108,222,83,74,182,155,81,49,221,64,164,165,217,26,209,21,97,71,1,111,127,71,156,197,161,133,121,243,196,160,176,51,238,234,80,237,102,211,67,185,113,88,163,145,135,84,82,250,12,75,40,100,174,29,49,47,52,192,115,135,145,68,74,2,23,242,74,2,231,54,12,131,95,133,10,109,163,184,163,213,174,205,89,239,140,19,65,236,85,83,6,99,12,39,165,217,103,70,147,184,209,248,70,100,114,13,133,33,181,155,134,205,18,27,199,154,204,170,192,226,36,149,18,53,181,36,28,131,235,251,208,177,97,225,130,172,11,103,8,98,155,72,131,51,210,226,38,218,66,136,153,117,8,45,12,173,39,82,139,67,69,21,150,50,148,27,84,119,138,35,59,54,123,115,203,166,95,47,17,199,71,125,150,70,253,188,91,96,12,186,227,90,201,194,24,27,137,210,33,121,27,188,150,229,8,107,124,2,77,21,25,49,51,7,238,161,201,36,172,145,35,82,105,135,162,115,62,246,142,11,75,217,12,235,211,233,225,65,248,78,47,28,137,241,225,214,25,202,169,30,15,80, -34,50,21,190,56,81,41,119,161,84,190,22,218,184,70,5,99,161,120,221,41,156,153,134,23,76,96,88,50,195,238,202,168,157,59,231,194,17,194,80,97,55,80,239,238,133,129,104,215,5,219,97,110,155,3,19,102,24,21,182,225,163,139,224,97,253,38,94,215,4,39,90,225,196,157,45,171,141,102,12,115,228,176,160,111,78,232,234,233,149,192,8,62,180,206,166,234,239,230,79,79,234,77,155,138,78,147,143,113,56,191,177,36,119,53,139,122,72,1,29,60,138,157,207,118,233,25,185,48,118,246,72,56,45,71,116,198,146,5,58,206,218,69,13,110,28,44,47,88,108,27,108,117,164,75,165,196,73,230,6,8,109,88,86,98,152,207,54,110,28,225,187,125,214,116,243,62,223,80,216,154,92,239,96,6,200,161,126,87,198,70,119,40,147,234,142,209,141,120,11,19,44,182,231,138,204,94,32,7,113,72,11,251,76,232,33,146,90,132,91,244,206,57,174,102,84,153,65,216,56,93,233,217,184,178,83,135,89,11,179,237,156,80,122,72,179,50,209,124,56,39,148,12,6,182,160, -138,40,121,58,102,230,179,161,78,168,223,39,88,192,207,246,153,220,82,160,224,136,198,183,75,10,159,61,214,92,108,130,58,15,168,141,98,17,2,109,59,220,134,194,167,18,252,81,196,218,196,138,65,19,41,104,86,251,150,70,117,174,245,206,124,19,110,6,227,105,179,225,23,154,3,212,120,143,119,208,129,89,224,100,19,7,105,246,50,51,228,3,232,68,146,14,52,94,233,82,74,73,34,199,48,221,48,145,117,97,65,7,235,230,233,56,27,178,182,1,3,78,202,66,205,186,183,225,70,126,60,209,170,237,238,138,109,47,202,45,244,57,190,19,199,198,164,69,80,212,154,112,211,196,243,44,46,169,96,232,220,248,138,76,201,245,175,219,183,52,139,233,137,200,48,142,48,189,36,232,200,39,217,88,181,47,67,199,11,123,143,118,148,2,135,105,44,189,67,39,229,197,137,169,224,10,191,9,5,223,209,43,99,62,50,31,189,188,181,36,154,72,110,160,176,2,4,30,134,232,2,235,114,30,75,165,198,4,247,96,182,133,34,79,109,205,238,112,1,175,236,197,219,44,67,121, -114,235,192,6,119,67,140,212,66,169,107,205,46,167,37,52,110,50,99,226,81,159,52,21,92,23,73,217,184,97,9,212,213,33,235,23,116,209,218,41,186,0,47,161,37,69,75,116,60,142,38,226,153,4,46,228,98,8,142,110,161,77,110,200,88,107,6,185,147,42,223,84,197,249,242,173,64,31,97,126,173,213,146,134,229,130,118,241,222,218,66,231,182,8,49,0,91,159,149,105,169,73,44,207,228,89,221,109,110,214,88,149,240,22,216,222,78,104,170,105,86,101,155,203,55,13,142,206,146,7,160,20,145,111,108,0,71,203,228,18,179,163,141,82,248,52,178,215,53,191,219,227,222,29,128,234,225,156,40,139,238,90,192,193,51,116,10,34,132,50,81,245,72,188,28,131,178,115,250,10,99,153,190,113,43,122,120,3,153,176,83,105,9,216,209,192,129,187,139,62,239,132,138,151,12,41,205,10,172,177,147,129,87,216,81,36,166,38,210,157,27,64,194,25,185,141,102,156,182,221,87,130,81,58,216,146,101,248,6,186,169,137,26,99,70,11,94,101,143,182,107,200,186,31,25,216, -116,76,6,17,157,71,233,130,171,127,37,33,82,40,199,12,171,199,125,100,78,203,166,169,212,220,235,31,9,109,181,88,250,233,162,86,228,1,30,70,236,183,30,244,163,131,123,107,178,184,216,170,12,21,45,109,75,29,35,14,139,115,85,79,44,36,165,135,237,8,3,126,79,209,183,54,54,215,50,52,132,234,111,15,24,224,24,58,207,195,114,69,116,209,52,98,161,104,97,193,228,171,84,219,30,21,174,246,237,23,90,123,168,233,110,222,212,130,196,17,180,204,138,28,20,102,155,198,236,21,181,37,173,225,214,205,29,66,206,16,159,105,19,193,244,125,252,193,5,124,142,238,72,113,188,184,237,198,80,32,207,136,82,156,216,0,70,205,16,14,174,2,126,166,71,189,213,24,142,4,132,88,33,148,169,78,103,133,62,217,132,20,74,150,194,145,126,168,169,37,136,198,154,13,200,46,73,180,221,158,18,234,118,72,91,116,236,38,189,201,15,141,6,245,100,210,122,166,15,58,209,25,233,33,161,178,37,92,163,73,213,132,112,167,226,34,31,103,196,185,52,53,56,94,28,153, -14,75,133,146,48,175,113,105,116,3,163,89,79,207,44,54,22,183,172,166,193,174,132,109,191,87,212,63,42,26,112,82,38,70,173,98,174,214,7,95,220,91,205,232,2,2,153,163,199,187,172,204,238,239,122,90,14,182,125,54,71,162,119,87,173,25,99,48,211,84,244,138,40,100,48,17,49,105,253,142,149,61,234,148,236,204,208,215,124,27,166,249,30,225,18,232,98,213,169,220,32,144,58,232,233,243,96,187,151,42,178,59,241,134,108,39,18,153,160,218,27,105,171,212,45,63,2,153,230,107,70,118,75,70,246,48,209,189,181,133,159,245,21,229,45,195,104,93,20,183,198,64,194,3,42,169,33,133,108,157,240,47,120,241,195,9,231,72,251,142,152,181,192,198,72,160,126,232,162,12,217,235,67,77,118,225,236,171,187,29,163,244,249,110,225,126,119,155,102,166,85,193,178,180,165,179,51,221,77,163,164,89,199,108,94,30,157,181,22,50,11,110,30,134,61,190,94,24,29,86,22,38,60,235,226,254,237,168,127,4,218,164,84,251,241,6,172,154,51,176,58,111,22,206,7,91, -211,50,126,100,102,117,45,130,235,37,205,17,8,195,98,247,242,156,137,196,142,141,234,225,132,220,216,156,5,235,33,15,145,17,251,194,140,161,49,181,206,213,18,61,10,222,64,84,90,12,75,210,30,101,218,186,203,51,153,81,182,30,188,119,155,17,201,81,233,234,253,141,5,221,40,177,179,87,147,204,141,147,154,184,51,80,154,123,118,28,187,45,231,138,69,58,101,159,104,35,226,194,83,117,94,105,200,209,196,181,238,137,227,219,5,58,167,72,139,117,182,47,6,35,184,89,24,180,64,95,135,83,130,136,62,218,81,147,168,13,219,46,155,65,152,124,82,201,129,83,138,88,227,9,81,145,173,25,119,70,182,46,73,150,211,134,245,150,25,192,166,233,17,88,194,137,161,185,231,194,43,147,78,36,166,187,135,236,146,53,74,142,182,103,225,14,197,102,15,221,151,202,108,14,40,77,93,254,164,72,198,209,132,49,142,193,132,127,88,19,87,250,76,186,217,62,142,91,198,102,89,150,246,233,84,145,65,176,5,75,72,89,104,7,102,60,42,53,164,45,54,161,163,45,9,157, -40,50,146,252,67,243,132,122,59,60,8,141,106,214,53,182,118,175,168,95,58,50,194,17,140,240,23,76,220,112,143,179,176,140,31,231,183,229,50,214,173,157,29,87,154,162,216,67,160,142,16,24,180,8,14,172,215,86,151,87,162,222,88,76,147,244,19,82,248,26,134,196,196,7,18,241,245,25,230,180,47,187,36,82,15,140,27,44,105,139,30,151,138,113,195,254,233,109,68,23,121,170,211,199,135,138,6,182,112,203,7,166,112,43,21,135,71,34,246,118,123,58,242,62,37,198,51,180,19,163,102,243,112,186,220,45,110,214,107,155,168,109,206,0,183,13,1,203,246,44,122,58,57,233,229,13,59,55,208,51,30,159,181,219,75,146,112,72,194,69,47,15,198,28,219,235,202,156,189,163,184,153,176,206,201,102,121,180,60,26,193,74,58,117,253,187,7,77,7,35,155,184,200,145,101,175,20,155,158,222,50,29,173,142,19,74,141,99,65,35,58,77,167,56,100,252,209,229,53,50,20,186,138,96,129,123,104,34,66,59,167,189,69,22,155,84,42,7,103,17,86,66,120,98,136,184, -55,16,216,201,172,206,78,241,50,17,49,161,49,110,135,231,201,200,38,249,252,129,120,68,205,228,184,137,129,169,168,143,34,227,203,25,252,45,82,114,104,100,151,46,71,67,161,76,76,34,131,19,228,131,68,110,18,59,21,24,95,197,55,169,15,250,34,173,157,71,156,198,140,142,159,225,71,45,86,230,230,220,22,103,78,223,214,227,235,28,210,40,48,216,110,13,13,197,130,2,117,135,211,151,128,210,218,211,211,157,106,156,16,58,138,245,49,173,252,230,22,195,0,42,154,64,36,214,102,146,153,94,62,99,111,85,220,146,224,204,39,58,7,60,137,73,133,184,165,51,195,163,57,13,91,250,166,210,34,35,166,223,220,75,246,236,49,189,38,211,202,156,9,19,239,181,239,178,28,212,129,189,49,111,73,68,141,167,114,7,72,252,86,103,39,183,217,199,102,238,118,15,232,58,36,80,31,103,103,16,187,24,68,71,89,238,113,82,210,225,113,119,26,89,59,9,6,116,216,164,50,145,119,80,91,93,227,251,109,222,100,196,52,106,21,162,172,67,84,104,218,131,210,195,237,50, -191,1,231,217,38,41,162,68,152,167,159,123,200,214,123,153,17,109,44,182,55,104,45,109,181,36,216,220,88,7,85,51,182,196,233,201,144,183,22,22,58,49,106,125,134,184,26,159,145,245,138,227,126,188,67,205,150,174,9,252,198,121,123,96,103,35,210,174,40,176,38,218,251,144,73,79,218,140,89,114,164,119,167,252,214,184,6,165,35,197,13,162,184,218,96,77,160,216,100,92,66,97,16,204,24,146,118,70,187,40,142,243,237,204,116,228,71,185,78,152,101,197,154,78,194,209,1,204,210,40,209,117,56,16,221,89,204,185,144,124,78,148,74,58,106,247,202,50,173,115,168,153,233,131,20,116,162,227,40,105,212,241,145,206,70,93,112,107,94,232,119,240,226,250,208,30,125,84,48,78,234,11,4,12,98,169,63,25,116,44,239,185,59,213,18,193,80,175,113,104,138,210,151,119,187,248,20,152,160,169,73,204,238,153,181,112,225,152,142,94,20,190,173,215,149,15,183,81,55,125,5,79,146,35,218,109,71,238,201,163,148,164,245,104,157,202,9,225,194,171,212,53,13,105,183,173, -29,173,224,80,57,203,171,83,141,234,241,184,113,133,191,104,128,121,231,230,178,246,38,133,178,131,17,154,106,207,54,73,85,77,219,253,91,19,189,77,90,40,6,41,133,34,7,59,102,8,174,148,10,23,34,239,80,77,173,179,26,193,66,55,131,50,104,95,132,78,134,144,102,10,169,212,30,73,98,123,178,138,69,31,76,222,215,209,3,11,251,146,161,205,126,174,200,59,52,54,204,53,79,230,152,155,166,157,34,102,115,125,7,102,64,113,187,215,114,156,69,1,70,60,128,35,178,140,26,217,97,116,144,236,88,50,250,116,205,233,41,117,159,244,40,226,50,186,97,218,100,155,105,128,25,197,114,208,77,219,12,19,134,185,77,153,87,26,165,163,221,196,13,147,76,52,216,168,227,75,148,205,148,166,163,22,231,136,50,0,235,128,135,17,100,148,31,161,211,96,144,248,128,112,197,142,34,242,55,124,122,206,254,60,141,59,21,215,141,57,54,148,73,135,209,63,185,229,204,177,135,161,218,49,188,211,68,109,139,6,116,2,37,134,68,55,57,73,246,54,20,169,3,190,138,25, -109,20,31,76,4,19,250,133,254,66,104,1,43,42,82,18,123,90,3,98,153,168,105,137,183,246,79,211,144,78,228,238,168,161,213,58,238,157,70,204,79,23,104,201,82,52,145,77,249,183,69,249,194,225,142,78,19,114,143,171,246,99,28,75,74,51,139,29,115,108,147,73,132,120,28,213,226,147,109,225,162,43,36,163,8,225,181,204,204,58,183,9,240,129,17,228,88,183,152,62,231,116,251,109,38,183,86,207,213,38,130,116,243,102,223,82,51,130,61,232,94,97,52,35,205,84,129,93,93,218,79,175,163,74,188,80,108,199,122,212,195,71,32,77,49,143,194,227,38,227,114,203,27,25,80,152,128,44,93,6,212,226,33,203,197,55,121,182,60,50,114,32,168,229,51,16,246,54,123,75,95,183,73,151,101,132,227,93,19,243,18,242,132,85,136,24,238,33,31,237,66,45,58,167,154,163,2,42,83,45,219,159,242,69,123,53,58,4,41,100,19,72,24,176,102,82,211,20,26,207,212,241,224,43,76,56,156,198,158,220,198,42,123,89,46,92,138,108,180,203,167,91,229,44,226,194, -96,63,148,68,242,106,183,114,51,67,34,133,79,225,26,60,72,225,23,52,116,36,127,182,183,217,223,71,131,83,72,157,205,50,90,151,205,57,154,146,144,216,237,2,4,20,137,166,83,183,45,54,155,93,178,169,90,156,159,215,238,51,242,29,161,78,30,44,12,197,13,68,160,98,223,102,106,125,93,135,230,173,20,85,121,191,218,227,26,105,237,85,170,123,68,147,6,92,68,23,76,28,6,35,5,243,72,96,104,87,125,180,238,143,168,197,193,35,209,222,184,88,174,138,97,124,178,67,76,147,140,155,93,78,57,122,167,82,3,139,84,207,40,102,122,127,140,61,31,90,115,103,27,135,53,205,230,230,126,12,190,117,27,206,238,22,12,141,76,1,21,62,215,178,136,133,15,142,147,24,251,132,17,238,150,194,21,10,25,213,155,130,177,35,15,183,91,59,44,217,159,212,121,243,158,189,190,66,216,179,219,46,11,144,73,248,101,73,158,146,27,30,138,174,244,183,118,141,19,157,220,150,14,189,51,70,34,83,112,34,11,43,97,154,100,111,225,176,128,251,36,77,78,15,170,15, -51,73,36,176,184,250,215,22,66,139,130,20,38,63,15,229,227,164,176,217,93,40,153,208,110,223,67,140,218,115,233,248,104,118,131,128,221,233,217,163,175,35,142,252,126,116,90,158,62,164,76,4,85,84,181,223,39,108,210,233,135,154,161,179,226,69,156,100,221,4,131,147,188,205,170,124,72,181,153,159,23,55,229,115,51,130,67,204,164,93,222,217,191,102,150,25,152,58,102,176,19,103,72,199,83,66,84,12,105,65,236,209,151,80,236,35,46,144,185,52,139,54,83,237,243,126,124,143,7,223,107,72,243,161,196,52,108,146,19,227,179,149,169,21,157,180,111,44,54,189,23,83,117,180,162,199,105,211,195,163,187,35,125,125,45,204,81,230,50,35,24,18,137,160,98,139,213,218,216,216,72,106,68,55,138,67,204,165,236,52,99,61,151,104,55,242,54,142,80,228,49,153,160,191,180,239,228,170,14,66,173,169,49,219,14,63,118,200,207,133,83,123,73,219,54,222,235,210,174,167,204,102,118,92,95,18,48,187,123,73,237,83,121,196,200,24,14,211,139,148,208,179,184,245,173,37, -157,144,66,139,11,120,141,148,140,37,205,69,34,81,218,133,118,152,106,96,42,227,140,30,237,197,246,118,173,248,221,146,70,166,16,22,205,165,66,110,154,204,151,121,157,188,129,182,35,97,204,143,66,219,160,136,172,8,206,178,107,176,1,21,204,10,164,103,43,99,9,12,143,66,241,13,146,252,93,235,237,52,152,162,125,35,56,170,235,211,205,119,236,19,248,56,168,31,187,49,130,237,21,248,150,102,134,26,141,235,145,233,89,190,25,235,16,4,87,210,252,60,92,185,209,206,142,51,1,15,102,165,172,244,180,123,226,201,82,98,114,131,48,124,32,216,141,114,229,126,227,242,152,1,51,96,194,136,120,8,178,136,66,53,113,214,204,20,121,162,25,230,119,240,199,6,92,132,37,73,124,126,72,176,139,130,186,132,124,244,76,96,106,19,27,11,76,119,29,122,169,114,215,172,66,63,58,207,216,106,134,47,101,2,166,121,157,191,171,25,237,101,203,119,20,164,88,155,105,132,132,56,10,142,209,22,119,60,1,61,59,19,140,22,113,58,167,116,68,51,178,160,118,102,55,194, -35,242,29,55,123,248,112,175,15,49,182,62,175,222,16,236,76,226,91,151,212,59,253,123,37,159,235,208,182,73,106,107,183,144,52,221,46,169,203,59,202,94,31,245,176,216,45,172,54,239,200,202,224,238,10,41,175,78,182,111,146,182,114,10,211,180,165,239,96,175,35,206,227,184,252,198,102,199,112,98,79,101,19,54,207,32,151,22,219,12,61,51,189,107,189,137,253,189,46,227,48,159,56,37,81,110,152,58,27,201,206,46,25,61,72,195,117,96,27,173,97,157,49,165,79,44,236,20,189,194,130,70,0,56,231,194,110,105,176,147,144,158,38,39,156,108,76,177,91,104,16,109,187,48,84,163,159,142,12,235,242,170,221,141,113,129,100,61,55,145,31,31,137,33,154,37,165,118,152,161,217,38,177,174,8,39,41,9,126,147,146,74,212,10,22,250,91,154,215,6,76,212,181,113,246,82,52,104,222,45,141,174,209,118,88,170,253,85,233,114,183,35,36,9,123,163,248,137,4,133,2,195,42,247,14,116,56,135,210,228,48,233,88,112,118,60,117,212,127,32,71,45,6,2,219,179, -220,77,246,64,38,33,239,70,114,76,105,93,18,205,115,9,109,62,92,68,37,12,45,72,214,237,68,248,209,230,32,199,217,190,30,159,35,116,243,246,91,58,98,237,107,52,117,6,165,216,119,7,150,119,233,230,46,86,134,8,248,192,180,29,63,15,55,246,173,236,64,253,52,105,164,179,223,38,78,105,36,182,189,144,107,223,55,188,181,167,98,40,82,65,70,116,73,44,18,91,209,89,52,58,75,64,172,115,10,176,108,208,56,57,189,179,174,51,23,204,9,227,22,182,149,63,154,146,14,29,166,96,202,92,161,184,191,179,49,186,229,139,29,185,252,26,183,38,209,174,52,170,103,140,206,193,72,46,31,112,11,186,118,88,109,108,206,74,113,176,47,54,58,178,150,56,232,59,130,227,195,246,104,122,9,134,10,26,216,52,28,126,105,161,175,56,51,25,235,21,164,3,179,4,212,65,243,94,190,217,67,133,33,59,186,151,7,98,254,62,106,151,117,7,166,63,224,101,229,46,99,215,114,126,220,48,145,203,228,118,180,217,29,87,59,60,64,182,99,212,203,121,10,90,97,112, -99,137,97,121,119,120,119,210,134,130,111,195,145,97,150,126,196,204,207,187,52,24,125,31,71,192,219,245,244,194,231,17,243,68,209,128,96,51,2,67,153,102,166,232,107,54,175,199,176,213,53,12,93,32,198,115,138,40,5,99,15,181,64,37,113,171,27,61,124,216,177,137,101,46,142,102,228,93,22,82,148,212,197,109,178,36,227,121,10,166,63,83,108,109,180,48,214,214,219,215,189,112,193,196,190,221,207,150,233,161,253,105,229,120,105,95,128,116,82,53,200,121,206,150,197,126,160,75,48,242,162,0,53,56,126,152,201,133,5,28,154,186,113,118,26,203,49,117,36,49,88,83,40,32,32,64,151,141,104,20,149,210,123,88,26,207,101,122,104,182,93,11,133,53,51,119,180,51,179,224,230,251,216,3,135,52,58,214,198,183,52,49,224,84,2,166,23,14,55,236,174,76,35,56,187,211,226,196,14,255,104,47,7,13,39,10,185,237,84,34,189,123,128,116,58,5,61,118,197,200,66,164,213,190,234,218,25,31,166,23,231,14,153,9,7,224,40,20,206,253,194,172,247,160,57,134, -62,100,79,134,208,238,233,33,141,49,53,217,100,28,207,53,29,108,42,149,137,61,78,60,11,58,49,149,122,169,117,18,71,216,219,19,244,211,230,39,91,83,248,33,122,96,20,187,18,95,96,31,106,131,80,67,147,17,182,219,108,133,23,180,233,188,3,37,112,229,253,187,69,12,111,100,185,107,197,60,36,78,117,117,175,52,229,83,67,126,74,134,138,176,194,122,76,189,170,192,14,42,4,235,28,237,233,236,192,59,24,246,73,76,40,194,131,149,18,234,97,69,74,64,238,157,134,7,180,254,13,245,16,149,41,135,185,137,83,226,14,147,11,46,243,53,193,209,109,254,96,36,170,157,86,249,200,125,109,126,116,113,113,59,102,135,78,248,101,154,28,220,148,223,85,9,90,212,179,10,54,108,114,21,221,172,85,30,229,251,121,54,108,167,46,221,54,138,219,143,98,218,57,168,137,176,94,54,75,95,37,168,144,230,86,226,100,123,92,148,39,217,141,8,174,215,119,136,240,174,51,8,90,33,138,150,200,240,12,99,176,14,253,33,38,136,68,54,247,43,228,214,195,181,150,21, -49,67,7,219,82,172,53,247,180,185,237,27,60,236,252,142,39,198,86,43,177,237,42,46,90,134,113,137,49,100,184,17,157,23,45,58,130,69,69,247,226,132,109,14,107,196,173,117,34,178,110,253,66,119,100,154,10,135,207,153,8,19,43,244,131,121,204,146,159,104,104,36,209,180,140,163,25,233,225,4,89,119,224,146,238,57,250,122,147,36,194,52,225,224,40,101,79,141,28,141,44,28,46,108,48,71,150,152,195,205,218,225,30,73,118,210,172,214,134,97,28,123,177,17,10,8,118,125,75,173,15,54,197,90,218,45,139,178,141,37,110,32,156,202,182,101,246,228,153,189,105,185,90,170,18,187,188,3,177,104,87,31,49,107,246,186,229,131,227,130,97,121,198,55,138,117,227,102,2,193,181,130,208,211,56,212,142,160,204,26,13,114,34,133,69,245,197,91,162,180,94,49,203,151,104,30,78,78,160,149,2,127,132,210,230,79,117,74,211,179,26,138,85,56,194,221,93,27,234,112,203,37,44,170,228,56,223,44,100,119,29,192,58,154,192,244,0,235,72,188,59,203,29,159,152,82, -175,225,187,215,103,35,193,4,162,91,103,212,116,112,8,240,184,126,202,106,13,164,242,45,174,189,54,4,47,111,195,107,120,10,122,28,166,150,192,39,87,67,17,194,236,212,33,18,111,26,198,82,184,10,210,50,135,139,76,174,241,151,122,91,230,84,132,109,117,35,215,60,234,104,178,99,168,27,124,97,115,227,214,64,52,185,184,65,214,204,244,66,53,212,128,124,235,72,29,155,246,198,186,14,226,69,49,211,9,67,147,124,11,236,204,238,192,116,174,183,63,207,145,244,24,76,157,226,132,32,66,242,42,195,30,10,55,21,240,33,22,219,251,162,164,57,198,188,124,11,195,162,119,117,97,5,196,101,10,140,179,132,239,148,118,180,14,247,195,13,157,112,120,20,191,178,202,118,91,72,12,181,44,130,105,37,3,217,102,174,31,149,140,30,148,230,178,225,205,93,157,46,239,115,48,245,174,89,161,114,167,55,214,151,89,91,32,23,249,253,233,216,34,119,171,184,86,236,129,119,236,122,153,165,213,120,102,32,107,236,62,50,246,117,206,91,150,85,102,253,200,252,230,114,193,125, -80,202,167,117,166,194,4,15,106,118,186,23,210,115,235,238,130,223,161,34,51,26,253,50,27,220,68,158,34,64,117,237,60,17,73,143,222,236,110,164,184,59,44,60,18,149,214,155,129,154,147,189,68,54,131,36,222,192,163,211,222,153,193,193,200,54,117,141,192,163,175,207,75,150,7,101,236,25,215,86,2,106,26,113,79,250,131,197,66,145,78,51,172,49,116,99,193,35,179,123,213,177,186,154,155,13,237,186,189,8,234,64,134,15,151,24,151,59,45,209,166,224,34,125,39,190,0,31,99,52,199,230,137,156,110,20,91,192,32,199,45,8,36,25,201,88,110,34,79,115,55,252,138,189,196,2,172,85,34,232,198,242,186,187,196,3,72,148,0,168,216,123,241,124,149,200,227,235,242,35,154,44,78,83,68,17,76,227,187,220,211,108,152,158,51,56,178,159,48,209,185,157,171,86,226,240,62,193,185,147,166,58,90,96,172,116,170,181,176,13,11,199,59,115,77,201,1,142,205,104,4,178,169,54,125,23,130,217,143,64,180,236,176,45,113,212,14,1,202,11,116,209,141,80,155,209, -67,29,119,161,224,244,185,224,130,63,161,151,98,113,24,162,99,94,31,49,98,58,103,133,112,140,15,174,219,77,154,141,156,173,53,13,118,175,45,187,92,220,237,55,79,35,34,91,37,226,108,36,3,243,207,174,244,247,111,136,251,23,151,231,230,150,151,86,231,92,137,146,108,100,115,217,78,46,41,177,7,93,133,45,239,100,174,152,42,77,122,11,18,174,108,115,160,113,155,108,204,244,117,210,26,187,91,162,37,149,25,22,108,241,4,161,126,163,113,121,114,111,50,61,109,54,174,136,221,29,68,237,82,49,27,227,76,111,30,26,5,180,201,86,180,137,193,68,145,93,9,168,125,185,19,106,152,133,98,80,240,125,196,92,216,149,31,32,96,149,221,168,94,171,203,183,24,104,158,177,235,36,136,85,19,74,213,183,217,183,57,231,192,193,248,184,172,205,159,235,61,23,111,20,29,133,89,176,14,62,232,80,240,60,179,152,129,241,21,187,66,28,92,194,181,99,137,113,118,243,134,42,220,151,107,243,198,3,9,233,42,20,201,148,36,92,187,109,41,227,132,24,30,224,217,91, -224,249,52,156,212,56,110,157,161,71,160,212,176,221,111,131,111,47,97,132,216,163,3,42,79,138,222,26,86,25,44,145,21,59,217,97,152,181,19,205,180,201,14,99,163,149,42,159,101,204,25,49,3,222,5,88,27,103,112,249,8,218,216,22,176,209,182,112,107,240,60,221,160,20,54,110,58,188,209,12,141,41,214,161,93,88,243,172,82,193,85,34,116,170,174,112,122,109,199,163,118,154,240,100,19,33,61,212,145,39,142,208,227,122,62,157,63,51,180,45,201,10,240,78,223,161,105,10,221,90,92,92,15,117,108,149,0,75,82,141,12,73,149,131,42,15,130,15,237,39,14,50,74,123,196,230,233,197,73,238,142,221,187,92,204,70,119,34,3,165,217,253,73,173,150,89,220,23,207,121,167,75,11,135,9,237,170,189,191,180,215,91,80,174,45,205,168,250,7,88,35,75,14,218,225,210,12,187,7,237,198,78,18,15,205,211,91,220,52,219,94,236,43,229,151,103,221,142,210,136,124,152,204,155,154,26,216,227,182,174,187,177,50,135,77,34,50,249,195,132,97,132,97,49,217,189, -24,9,201,15,218,92,124,67,59,39,125,68,226,164,229,139,141,211,237,30,177,175,55,109,64,14,195,157,139,219,195,218,129,185,162,167,4,212,113,197,137,162,243,176,156,119,173,140,16,34,219,185,225,67,177,194,67,237,20,12,178,45,243,99,112,18,41,173,18,64,131,20,23,115,32,111,89,229,19,243,182,182,212,192,72,135,61,176,62,165,201,206,27,155,155,194,6,49,183,195,55,61,61,206,182,248,68,97,101,135,214,44,18,181,76,5,104,14,252,100,211,154,131,137,109,135,251,77,124,31,146,136,13,76,117,133,134,37,177,113,159,120,188,167,81,115,24,31,158,60,192,80,185,235,61,24,37,69,64,223,141,227,58,25,237,97,193,28,81,135,16,49,13,252,209,177,18,131,145,116,177,19,51,33,34,114,170,95,204,103,82,102,121,221,118,44,197,4,237,176,219,92,174,45,36,47,190,150,152,107,221,38,184,73,136,86,116,171,231,112,61,212,180,21,99,71,167,85,195,82,205,96,124,124,84,170,116,173,47,242,37,177,88,52,214,191,215,210,215,19,235,205,47,204,175,231, -119,50,104,109,190,152,91,229,234,58,181,197,209,157,124,161,180,84,44,118,10,250,246,11,203,133,217,120,52,23,65,242,247,85,61,35,217,241,129,168,168,39,200,21,10,6,21,146,133,229,236,250,130,231,80,210,183,191,54,63,105,182,182,207,20,188,233,169,192,28,137,22,73,248,236,219,134,118,19,14,155,196,114,218,137,157,184,213,230,82,223,58,83,161,166,239,7,109,134,21,161,61,208,41,161,154,244,4,105,79,143,125,96,155,212,230,92,113,231,102,6,50,5,106,44,149,76,45,21,15,98,195,46,46,19,116,64,91,56,51,59,200,23,143,20,17,131,221,235,185,69,145,105,47,32,95,209,31,161,122,137,219,190,161,67,28,34,23,220,61,104,114,219,72,242,245,33,14,159,55,53,32,91,234,94,235,242,28,226,34,138,144,206,153,102,15,121,104,91,252,53,178,165,21,109,54,109,228,104,236,166,148,164,144,109,98,27,172,27,45,162,21,238,82,103,164,56,181,150,217,99,46,108,89,214,55,119,27,59,80,186,62,189,109,119,141,106,227,148,80,14,82,120,1,129,144, -173,122,147,2,81,120,84,185,22,33,183,239,101,7,119,90,219,9,233,184,15,30,26,113,18,70,59,226,157,65,113,134,51,17,8,117,211,13,48,252,146,184,203,148,129,138,137,228,17,155,117,122,75,238,94,192,69,35,25,131,197,22,220,112,54,202,214,17,7,46,89,180,207,223,187,18,100,44,89,196,94,17,186,17,157,205,170,11,106,194,158,106,41,59,82,178,116,7,221,115,217,253,44,185,217,172,165,143,151,180,147,86,109,94,18,142,17,75,179,217,168,182,71,235,40,244,241,119,11,214,233,146,56,106,9,80,73,131,37,219,140,189,37,202,70,113,139,217,209,118,55,214,8,91,116,174,102,28,27,182,252,178,177,69,198,95,115,238,58,71,157,203,138,81,105,203,200,110,210,136,247,30,245,249,185,157,115,254,149,149,105,76,35,63,61,233,158,197,132,155,133,51,122,167,13,227,30,67,83,7,20,244,110,184,65,156,237,93,73,39,251,145,6,216,222,76,231,58,194,80,142,7,185,114,60,224,14,82,180,29,2,79,210,168,137,19,182,102,245,192,226,193,59,148,201,70, -116,122,150,32,158,155,197,186,105,129,85,95,212,164,67,55,171,173,201,217,22,148,118,28,206,98,109,182,216,56,166,100,81,211,212,68,154,225,244,52,35,34,11,18,203,193,82,147,65,7,239,192,248,230,184,109,4,158,199,167,161,100,146,83,28,250,148,144,199,104,161,135,52,90,104,251,161,215,76,235,247,83,11,97,57,214,64,92,10,132,178,10,27,126,205,103,66,155,35,253,116,206,52,51,96,156,48,22,228,71,8,153,0,129,111,178,162,249,67,109,57,103,219,152,65,203,109,68,115,253,255,31,83,103,213,228,44,215,117,235,191,78,220,221,221,221,221,93,59,158,142,187,117,220,221,147,125,63,239,119,178,171,128,74,81,156,144,53,25,99,92,19,22,64,173,94,1,151,225,30,5,65,148,148,196,168,239,238,229,12,94,248,174,115,66,229,70,106,188,0,65,134,221,74,92,88,62,147,154,157,145,147,10,90,126,255,171,5,217,48,185,147,84,29,94,102,132,216,243,194,172,193,190,155,216,116,158,12,173,220,172,234,32,208,237,246,169,129,81,83,76,233,113,197,77,145, -136,195,31,79,247,240,129,229,197,59,20,253,215,37,183,249,189,42,183,194,169,95,189,99,69,195,65,182,69,18,3,47,151,99,21,233,45,208,61,71,189,70,99,45,48,79,206,44,157,56,143,75,113,53,177,1,68,123,157,151,225,5,39,81,30,234,34,222,149,34,117,58,68,209,28,98,180,188,95,195,195,38,185,62,158,123,203,195,136,46,48,79,82,122,176,132,152,83,190,10,99,37,85,47,128,149,22,82,83,60,52,164,28,229,32,216,144,13,94,23,204,92,245,12,183,83,110,225,183,72,1,32,154,119,16,220,31,8,132,34,237,152,126,8,239,20,43,36,242,39,118,79,248,127,109,212,68,248,91,149,10,63,125,61,92,137,159,123,7,42,14,237,99,203,166,45,139,239,12,181,249,73,89,106,212,223,77,69,169,57,119,35,144,99,206,15,35,134,184,104,129,54,103,45,191,61,133,116,107,67,207,58,148,241,38,40,235,64,82,134,200,76,148,153,40,13,167,47,197,161,236,52,42,62,152,214,157,222,22,61,232,188,120,225,213,142,84,80,60,172,196,72,19,208,137,253, -69,2,79,172,201,70,189,169,3,116,170,204,135,178,161,51,124,114,90,48,50,194,41,126,42,216,4,30,160,46,242,196,128,62,45,127,63,132,117,44,241,10,51,140,186,237,29,169,140,28,142,226,85,104,94,49,40,155,4,91,254,208,4,105,11,16,111,201,53,162,116,163,107,134,103,168,223,190,210,159,121,17,26,97,185,25,178,239,155,57,112,126,108,62,195,225,1,56,157,254,110,183,254,238,42,84,56,90,189,78,163,57,89,205,202,182,178,3,109,163,58,106,212,8,212,91,236,188,244,195,146,193,46,219,126,155,151,253,150,95,17,244,42,180,247,172,168,211,155,237,116,172,53,68,203,158,170,57,142,198,63,113,171,39,110,77,232,108,233,84,44,241,197,60,160,119,207,253,118,86,232,59,202,212,251,225,223,20,33,53,241,207,149,125,255,41,187,45,8,48,40,249,121,250,247,59,139,240,24,56,214,89,125,31,209,136,254,126,172,193,105,94,212,226,216,244,213,8,137,164,89,24,246,9,194,70,64,40,177,107,247,113,33,112,99,105,60,118,32,206,120,199,104,190,243,255, -143,143,236,107,122,66,76,67,219,46,16,173,63,53,97,109,216,35,88,234,87,71,28,89,129,196,36,73,2,129,26,174,25,46,204,169,4,136,63,231,43,33,97,156,86,60,51,130,227,46,138,115,13,78,205,115,81,26,27,29,135,102,55,46,68,111,154,183,204,215,86,207,15,34,41,234,159,147,8,24,123,96,35,64,93,98,101,198,40,233,231,131,237,25,5,70,34,0,161,132,101,118,179,182,87,47,57,131,234,130,7,170,44,31,18,225,86,46,43,226,112,50,137,252,180,21,238,58,82,249,2,24,27,186,255,76,33,2,90,97,134,172,155,104,33,206,56,137,61,44,48,203,25,100,158,101,172,178,68,192,32,63,109,151,87,254,63,188,198,171,25,239,26,43,197,178,5,179,211,40,247,193,124,14,76,38,139,225,235,116,90,221,250,202,192,83,104,248,106,2,14,139,33,81,128,142,86,91,179,245,122,17,90,141,194,230,2,195,209,170,253,85,250,91,169,191,221,123,141,147,94,125,227,251,10,34,211,176,244,252,174,167,155,201,175,8,175,64,207,245,11,32,106,181,247,197, -150,161,220,66,62,1,166,94,199,83,239,145,172,214,69,155,197,239,154,91,108,75,195,145,121,138,241,24,11,214,240,143,37,190,219,185,218,48,184,115,139,116,221,247,138,92,27,31,69,34,210,104,69,150,11,169,31,152,12,170,91,69,225,168,232,12,16,30,0,228,142,156,70,145,187,133,225,144,250,247,35,126,123,85,56,242,63,192,135,249,255,47,112,85,30,132,150,0,70,50,224,238,34,52,203,195,42,42,25,72,58,159,52,122,209,241,158,241,104,147,144,130,141,33,158,147,132,75,25,5,46,147,238,1,60,126,220,100,137,243,7,214,150,243,188,111,87,32,92,52,32,9,1,148,27,134,120,117,220,120,16,6,211,65,103,153,60,48,3,216,204,64,92,152,61,23,219,140,84,141,142,59,129,101,74,130,65,17,130,113,153,197,12,42,157,139,68,201,144,145,43,86,186,36,22,70,144,5,176,248,169,163,126,253,110,220,88,15,97,177,53,59,75,31,12,64,81,246,224,133,113,96,95,116,41,149,10,44,184,10,145,23,226,41,89,167,5,223,202,97,62,207,33,49,47,72, -42,241,71,79,188,185,204,236,82,31,247,79,135,217,243,40,212,12,6,59,145,52,162,154,114,146,69,47,249,87,11,145,59,130,240,235,241,250,60,248,88,23,15,239,87,219,51,78,203,157,238,116,182,217,76,102,179,170,237,188,228,184,60,158,150,231,148,141,239,58,163,233,147,231,151,149,212,62,18,168,88,191,79,77,162,97,233,29,83,124,221,7,241,3,45,150,19,82,98,250,66,220,121,59,247,189,101,67,233,63,180,252,142,139,93,179,72,73,11,254,98,209,45,211,56,56,75,117,115,161,105,101,4,107,71,6,183,209,141,242,141,139,125,141,72,40,61,57,65,220,176,83,108,37,191,225,187,166,121,200,155,11,247,105,4,168,36,190,83,223,251,98,96,242,222,161,159,224,39,42,94,19,168,41,245,12,248,10,129,32,116,251,219,168,165,233,126,44,96,174,237,122,13,152,25,29,221,252,25,254,129,227,127,67,198,252,47,36,247,76,168,16,50,65,151,42,145,178,44,17,111,4,16,65,160,184,188,148,148,34,30,67,22,217,67,153,17,131,10,88,83,228,80,213,10,221, -53,92,94,169,151,173,152,147,113,104,162,223,24,28,72,211,130,2,33,201,11,179,185,31,8,104,239,222,191,93,18,82,68,174,135,139,83,196,36,88,163,62,200,143,230,66,101,24,17,245,241,25,63,46,101,188,145,85,109,13,217,62,154,168,218,239,33,33,176,195,118,26,13,126,124,233,22,235,86,17,226,96,243,68,210,122,101,194,141,34,205,243,119,192,92,150,153,46,41,120,183,146,8,1,94,187,177,235,183,168,248,166,75,58,14,84,241,190,246,46,26,87,24,114,9,158,42,252,224,216,246,236,48,194,85,33,138,214,213,141,187,127,70,146,182,49,4,19,234,94,61,205,158,207,227,69,239,236,172,252,191,159,220,252,85,34,25,27,1,60,61,203,177,96,48,3,74,105,52,146,188,35,159,247,3,164,175,250,115,119,122,23,128,234,85,9,65,225,183,212,104,142,86,156,229,102,53,255,117,92,170,151,242,188,165,241,176,227,255,70,35,221,90,160,251,63,50,157,109,231,146,246,108,114,167,78,94,239,201,11,191,189,170,191,216,160,248,202,189,64,175,228,243,143,180,204, -95,90,142,9,168,233,207,69,21,193,121,103,41,238,236,61,196,235,217,230,62,221,249,237,217,188,123,115,211,115,244,180,82,125,107,152,203,16,99,133,62,162,53,91,176,205,11,1,33,17,54,21,35,255,136,31,249,223,174,76,86,122,205,143,248,93,74,181,253,237,164,57,145,30,218,183,238,38,163,120,68,11,226,153,153,233,191,227,69,243,95,218,187,28,105,85,247,20,102,51,220,50,184,180,127,83,249,6,160,255,205,186,228,154,17,191,140,203,200,226,41,118,90,94,197,254,32,253,180,169,197,192,96,197,61,216,194,89,79,107,146,111,77,55,73,139,114,67,235,49,141,54,168,163,107,78,48,122,131,222,187,142,246,249,87,23,166,192,17,75,104,67,161,98,122,119,208,88,137,39,98,203,135,54,8,182,81,133,61,242,94,126,84,23,88,190,229,85,143,158,93,73,235,180,96,120,89,240,241,118,138,38,252,185,219,251,179,238,230,169,74,222,157,37,168,144,111,210,132,87,30,109,213,34,228,47,28,48,100,82,64,22,61,21,130,198,247,51,160,28,132,46,175,145,244,215, -59,179,118,248,133,68,169,27,46,251,33,15,227,109,131,143,5,159,31,69,239,121,154,83,67,130,158,141,50,92,182,8,59,128,103,97,75,185,45,235,136,217,224,101,107,169,201,143,198,133,98,200,174,224,116,135,233,214,238,66,13,90,157,83,21,71,60,238,108,91,210,141,27,54,189,99,132,115,210,120,190,148,176,159,152,115,236,21,226,217,39,213,198,251,136,130,110,160,69,217,70,19,58,39,45,144,69,223,127,206,98,193,81,101,215,144,182,173,40,13,109,143,241,0,212,205,248,231,176,205,112,37,188,169,2,93,7,193,6,47,86,203,227,21,143,122,238,118,75,198,116,101,67,97,95,161,216,187,145,203,164,130,170,154,44,156,49,137,142,65,36,68,15,96,60,145,133,227,5,127,210,222,244,185,207,0,156,140,49,48,63,205,92,153,171,6,1,8,119,162,101,9,16,152,36,84,194,60,92,93,72,188,19,14,180,203,95,167,209,198,221,100,79,72,136,171,125,154,163,68,21,142,173,72,119,144,11,174,167,79,181,204,16,57,248,144,230,184,181,234,46,251,138,72,34,208, -103,227,119,242,223,134,126,176,128,29,182,103,176,248,201,126,126,176,91,15,79,243,233,134,122,30,88,98,212,202,50,123,22,32,162,123,146,146,34,197,0,105,125,30,203,214,184,49,79,232,44,128,107,205,110,107,56,83,102,88,43,3,211,90,53,56,177,118,237,165,154,57,223,42,57,78,106,130,165,145,210,68,63,214,177,202,229,88,246,233,243,90,141,123,215,156,227,197,183,142,212,20,203,186,0,113,157,112,157,7,188,179,124,59,104,46,119,196,64,139,86,154,0,52,134,7,183,21,96,201,253,90,216,243,23,210,127,5,53,124,12,211,146,181,209,163,62,35,9,137,146,193,118,178,251,23,41,192,101,11,164,31,138,140,89,150,133,255,58,240,145,183,247,172,189,133,250,105,101,104,125,33,10,225,31,123,208,36,201,11,108,254,88,232,235,200,185,57,86,121,30,192,227,74,155,21,16,61,102,84,74,24,21,202,192,166,187,131,99,112,55,113,128,79,117,187,86,34,164,175,247,165,61,122,248,86,154,94,196,214,179,77,208,55,36,203,4,108,127,102,219,224,14,142,208,140, -248,119,124,7,12,79,5,144,101,179,152,81,122,129,49,210,33,56,23,246,44,45,34,106,189,223,184,211,220,80,231,224,28,84,162,244,216,214,45,35,12,205,136,32,18,152,227,138,240,158,181,227,162,1,38,8,153,255,194,0,165,35,192,240,169,2,6,127,96,186,234,128,12,183,173,199,71,4,222,25,161,180,27,137,185,59,139,204,10,227,23,174,175,223,125,149,177,202,156,52,44,98,208,31,33,215,220,253,196,230,186,249,173,93,85,26,207,178,246,34,218,108,72,112,52,21,125,133,81,2,35,179,158,57,9,121,255,72,222,99,100,219,5,88,114,104,144,91,114,20,176,97,93,82,99,15,248,244,248,19,202,20,179,157,127,241,126,202,235,162,210,239,125,165,184,111,250,129,129,59,139,192,173,174,157,52,95,179,33,71,87,225,21,4,92,143,56,124,44,116,229,248,219,190,156,50,60,113,30,2,165,40,20,254,130,34,221,129,84,240,74,14,84,19,217,5,18,132,74,138,98,200,118,1,195,252,75,47,164,106,221,249,25,172,172,53,127,209,42,231,95,132,244,193,216,110, -174,187,229,251,14,159,118,16,130,60,160,202,212,158,25,104,76,230,150,226,199,34,137,121,55,87,93,157,16,31,76,107,136,120,252,12,119,94,222,9,139,223,87,124,247,170,189,70,183,32,235,110,225,74,81,32,81,35,244,36,219,109,12,36,135,185,113,89,0,25,89,214,112,126,89,170,86,110,204,139,117,208,151,205,214,156,220,45,13,54,75,123,124,227,7,188,251,55,7,255,254,203,32,169,249,134,253,61,15,226,227,79,19,246,229,47,26,185,3,108,83,83,87,64,240,99,189,69,185,96,247,83,255,246,58,153,39,237,238,143,209,210,24,236,220,237,144,147,135,248,4,185,1,30,138,116,135,245,119,163,126,38,4,210,8,18,197,132,80,26,70,250,207,47,92,26,197,133,237,44,13,202,194,140,50,7,105,47,100,33,72,212,75,93,93,103,95,137,133,90,24,92,39,218,255,163,0,7,185,63,193,23,78,143,115,2,154,69,51,23,184,106,239,251,164,233,228,178,250,89,172,94,100,123,15,71,232,253,41,153,193,16,21,160,236,143,150,241,6,59,190,29,66,40,29,229, -234,220,15,102,98,136,28,10,115,190,158,49,209,70,69,136,115,247,0,4,183,160,66,208,224,180,255,178,96,153,230,95,74,147,93,116,65,74,248,75,200,172,204,4,149,43,104,29,110,159,233,113,44,110,33,96,148,5,70,113,97,114,96,49,219,89,44,5,253,59,56,32,17,100,58,194,251,38,154,41,8,62,66,36,128,70,142,246,155,139,201,246,249,83,60,156,164,76,116,89,39,177,219,14,4,230,222,84,59,179,82,148,33,254,236,100,253,53,122,26,202,109,196,212,77,51,225,99,12,25,159,199,26,108,254,11,194,50,249,115,167,145,229,241,111,63,190,39,48,222,20,13,164,187,200,15,131,214,96,41,232,217,12,187,33,44,97,125,72,43,123,205,168,71,44,121,72,102,238,254,132,38,81,51,162,25,169,206,46,146,210,73,92,38,121,4,148,208,98,189,25,152,28,19,149,143,145,168,22,254,9,124,249,221,29,29,125,121,112,46,241,224,253,127,21,223,254,201,45,121,134,217,127,186,95,39,253,237,187,98,128,232,0,227,241,181,43,218,74,130,6,65,96,126,187,161, -30,49,97,208,232,138,235,176,201,214,8,115,115,107,88,21,190,62,202,147,187,219,159,176,142,116,168,45,90,116,131,179,149,233,80,217,226,181,21,225,224,157,222,40,159,228,214,198,9,197,26,170,20,100,133,101,119,255,133,229,158,235,57,225,138,206,124,204,166,157,128,243,230,175,215,139,221,102,15,88,109,101,155,163,122,150,88,171,44,55,219,131,69,232,124,29,30,228,13,7,151,13,124,40,9,186,6,15,212,115,132,213,90,211,205,91,106,16,149,183,254,216,226,118,182,222,190,96,229,232,80,168,158,15,98,134,72,209,108,170,239,187,197,136,149,18,252,112,15,108,216,182,193,36,171,106,189,187,195,237,230,181,61,95,218,134,179,60,97,111,152,118,51,7,239,6,185,242,235,44,5,255,24,70,62,252,231,121,182,115,155,36,21,63,152,221,68,15,134,110,36,96,87,200,180,161,126,149,157,246,95,149,79,165,206,141,34,165,41,36,32,227,203,32,134,51,54,212,22,128,118,97,184,1,223,176,70,85,181,161,171,164,209,192,161,86,172,20,92,255,235,124,217,63,221,166, -50,32,237,21,160,110,40,188,112,28,62,3,17,142,8,149,221,13,202,23,168,247,187,101,235,2,239,110,201,188,188,223,224,68,139,98,167,201,65,101,189,30,219,60,188,48,29,96,36,80,31,32,140,9,194,136,144,151,0,12,91,54,202,187,169,44,86,237,191,43,62,200,35,181,49,250,3,77,75,50,190,132,86,36,133,116,228,95,4,54,24,187,135,6,191,227,118,137,132,51,76,36,80,235,153,115,134,153,19,128,239,111,182,28,199,226,27,7,160,96,30,159,188,22,172,131,43,108,32,36,37,79,17,73,233,143,177,218,129,148,104,244,148,198,187,197,32,230,14,239,224,107,55,96,35,220,236,155,186,68,78,147,45,27,219,243,59,182,102,44,142,189,221,249,241,89,226,222,169,231,59,40,22,108,253,213,151,79,66,151,236,6,249,195,32,205,1,196,2,227,144,220,144,99,247,172,33,69,177,223,247,113,104,85,25,76,185,8,183,90,69,106,131,233,56,156,22,114,9,74,235,230,228,243,81,28,183,87,119,79,218,67,90,109,214,28,99,65,214,90,48,124,202,143,169,54, -174,184,238,191,226,167,82,187,106,12,243,12,168,222,63,191,4,73,224,181,228,40,88,64,171,210,163,8,84,111,197,57,102,95,46,217,62,246,120,33,93,52,226,183,166,119,130,193,19,86,8,16,198,131,139,39,131,146,123,130,94,86,166,121,108,196,209,241,83,106,211,186,11,63,16,238,177,92,156,11,25,45,83,92,68,13,57,75,87,254,38,158,137,247,106,236,87,202,66,127,60,63,111,176,78,222,185,202,25,214,57,184,150,21,159,210,225,9,117,220,253,116,159,214,217,136,27,31,143,36,74,10,131,94,149,46,128,247,224,49,148,0,137,34,156,133,116,173,179,41,59,46,214,117,217,90,99,56,42,244,31,155,173,186,104,45,221,248,211,57,142,119,3,80,108,148,248,152,160,121,177,15,241,241,248,245,211,15,127,197,78,165,125,93,99,101,166,197,111,193,84,45,254,217,49,0,115,222,97,21,151,238,54,175,221,153,161,108,57,86,45,238,214,234,49,35,15,135,131,192,171,166,63,194,9,90,145,67,142,166,80,100,154,128,46,131,66,216,160,171,0,149,66,78,231,27, -238,91,245,53,198,208,235,208,47,219,188,26,154,87,170,162,82,153,5,63,178,8,17,64,133,26,18,97,196,90,115,8,235,119,73,39,106,120,20,80,105,170,181,167,48,219,178,183,230,196,203,75,98,252,245,12,69,8,6,34,156,80,187,188,77,96,39,23,177,176,136,49,50,197,0,230,115,185,35,147,50,111,182,20,222,185,236,247,106,201,61,45,234,136,55,145,152,217,70,102,82,107,4,227,58,226,224,203,82,112,216,192,246,70,74,1,4,152,226,132,244,124,127,201,204,58,22,236,4,33,36,36,154,138,17,106,174,248,220,38,170,184,0,195,146,231,6,250,252,189,72,120,241,189,183,137,23,228,72,34,150,180,31,27,225,106,85,125,232,184,185,33,64,152,42,4,112,239,37,125,109,26,71,110,123,182,25,122,76,80,224,188,26,156,159,101,20,18,27,105,15,173,199,151,239,110,4,97,12,250,42,138,154,100,211,196,232,209,230,223,164,114,123,219,190,107,223,45,128,61,182,16,25,211,249,13,191,54,189,139,51,250,71,87,192,80,13,253,48,250,44,161,208,212,174,138, -132,236,84,156,234,121,86,248,71,165,144,195,0,48,198,164,81,4,40,5,81,128,46,162,49,182,144,227,73,40,20,138,119,240,254,83,142,57,151,185,12,123,39,23,170,203,236,58,201,175,141,237,184,83,193,0,152,34,84,186,53,163,68,214,244,42,75,229,74,54,20,52,140,243,126,25,56,38,176,236,215,218,16,41,252,22,66,137,15,103,53,62,210,22,229,14,169,227,122,57,39,254,206,201,187,11,18,215,180,98,18,160,73,155,68,57,252,242,44,194,9,120,238,219,162,95,105,90,215,9,181,154,184,218,53,47,199,90,237,142,203,214,49,61,105,124,99,54,150,75,166,98,125,239,168,159,57,169,88,12,128,64,126,62,63,151,251,188,49,197,194,111,165,209,104,174,87,144,58,72,56,49,22,20,138,224,236,161,241,180,158,158,230,121,61,59,235,112,180,51,45,86,179,209,4,173,133,230,244,89,219,124,188,108,39,24,65,94,216,239,180,236,247,44,2,165,137,110,55,57,192,151,155,69,118,244,207,230,93,97,234,135,82,159,253,165,180,157,212,154,139,127,173,237,216,203, -83,107,145,0,22,218,227,231,227,208,135,211,80,222,147,202,19,214,241,181,138,170,30,156,133,116,75,230,56,97,82,239,251,41,171,82,253,88,159,42,1,66,208,104,33,196,198,32,148,216,42,140,26,122,73,218,61,96,130,193,221,244,81,132,70,34,76,178,81,238,40,146,136,222,131,67,224,152,150,154,68,119,228,134,77,41,38,92,254,239,137,11,195,219,11,162,108,67,238,164,173,186,34,145,56,33,195,207,58,41,246,249,47,10,106,63,12,210,218,21,207,208,181,25,1,80,151,147,203,0,37,99,225,116,108,99,187,212,50,192,68,87,71,92,165,35,178,162,112,157,101,16,20,122,133,7,165,93,35,164,15,133,6,203,115,200,249,124,4,221,192,179,204,175,92,165,96,144,136,180,246,125,132,13,178,46,218,67,237,117,215,73,239,254,254,240,152,133,54,196,223,251,225,137,126,227,36,225,205,242,35,70,65,144,172,62,28,128,137,38,72,211,56,149,113,142,144,160,137,41,32,71,126,158,172,77,194,104,179,89,193,72,10,5,49,90,17,127,115,40,132,50,182,15,1,108, -155,129,246,67,230,148,99,217,201,193,254,148,65,26,18,13,27,243,250,85,184,51,223,209,109,48,218,180,28,252,10,4,244,19,241,241,87,48,101,208,126,5,29,138,183,245,173,145,37,152,180,86,99,44,31,227,152,123,21,171,71,17,7,159,101,83,174,23,49,3,197,126,28,12,129,136,42,252,51,106,241,225,23,183,167,108,113,163,221,91,249,55,174,59,78,52,12,107,10,126,119,146,189,67,99,155,193,245,51,152,18,73,99,169,142,183,195,76,45,61,16,128,213,192,115,126,64,224,85,182,112,129,160,79,112,48,194,195,197,208,208,150,36,37,201,227,166,137,135,250,43,49,71,174,22,2,169,236,147,20,3,66,204,215,164,70,180,16,68,206,4,113,95,119,250,223,99,23,185,232,35,47,48,220,165,16,178,29,236,4,184,108,143,119,181,174,245,187,8,24,6,33,254,213,94,249,166,102,74,107,94,220,78,120,203,49,111,74,76,243,190,172,129,229,112,63,186,45,246,192,223,235,242,119,26,254,5,103,127,183,221,238,38,140,126,111,66,66,222,125,98,95,46,231,37,8, -227,35,151,177,113,235,201,204,227,156,32,73,132,189,59,250,164,29,34,147,207,165,22,248,221,82,241,95,100,76,152,39,228,238,67,228,185,239,4,243,45,130,200,180,180,248,170,181,118,177,74,46,52,155,181,223,48,231,204,194,158,101,29,156,204,5,209,141,223,89,217,59,149,149,249,112,178,17,188,198,166,21,47,173,131,192,86,50,187,125,53,155,57,86,54,23,139,46,143,48,213,98,241,28,77,251,165,69,224,37,248,128,134,59,61,201,12,93,162,235,29,176,186,111,83,113,208,166,241,92,147,27,119,198,29,242,224,7,146,232,233,227,108,135,144,202,149,240,203,100,161,69,50,42,145,100,9,133,113,72,100,80,88,6,208,210,80,77,168,13,21,198,212,241,54,233,232,93,133,255,107,128,56,239,203,214,14,212,100,236,95,60,204,39,66,14,220,48,44,18,187,142,6,240,140,177,138,68,159,162,209,70,211,31,33,98,53,105,192,197,168,241,248,67,40,23,102,137,231,253,132,105,214,167,48,45,118,11,147,15,104,254,147,48,57,244,238,229,166,240,18,38,139,62,232,173, -68,98,22,68,155,92,170,93,250,242,77,87,135,41,29,79,49,224,93,48,151,91,251,195,93,122,31,82,73,104,255,133,69,170,101,100,2,218,242,39,65,40,30,19,169,202,36,157,31,248,206,232,200,49,4,61,130,129,31,197,48,92,247,249,96,136,90,117,141,51,0,86,11,58,12,195,93,77,251,187,108,91,52,3,72,22,67,186,225,139,90,54,132,193,88,109,185,36,248,120,71,203,205,206,65,217,84,150,230,138,78,207,224,24,222,149,52,192,136,145,187,15,34,154,100,198,111,150,64,26,86,203,225,178,12,197,191,168,222,39,243,125,47,76,239,20,48,234,58,231,167,252,193,12,61,133,243,10,194,148,206,212,94,20,205,207,87,238,199,88,195,187,144,172,24,29,233,1,80,9,249,24,167,15,165,246,98,114,218,14,50,156,5,50,3,168,243,40,160,13,180,60,146,95,140,88,111,201,65,153,103,150,39,3,201,61,3,44,14,102,45,172,161,51,137,180,188,228,204,146,73,63,211,43,95,59,5,116,107,159,21,209,8,105,1,54,167,168,133,107,103,185,171,4,69,242, -3,60,175,45,178,12,149,40,97,110,120,234,237,58,19,35,179,125,140,59,124,188,15,166,99,179,191,179,206,126,147,213,181,19,142,121,29,62,151,185,18,82,153,51,22,203,122,194,97,216,206,59,62,202,215,94,211,26,193,164,49,40,228,79,99,96,58,19,78,49,198,158,179,176,4,172,251,211,25,34,108,62,220,196,86,177,163,19,118,71,254,35,195,15,178,219,135,159,131,74,175,118,138,79,212,81,165,161,112,98,107,120,252,217,126,97,178,221,190,214,178,201,73,113,150,237,52,91,131,94,170,209,219,69,223,65,139,173,43,119,1,238,28,131,187,243,95,45,200,142,102,241,225,219,243,30,191,118,141,30,228,89,43,188,141,220,158,73,24,104,152,89,216,27,36,2,47,183,13,114,178,20,88,126,35,118,41,220,17,207,128,29,138,158,231,42,23,103,172,250,98,150,169,39,142,44,196,148,185,159,93,30,77,218,29,96,63,183,117,216,245,70,163,66,64,232,4,130,21,174,238,70,138,194,239,136,15,21,173,167,0,153,217,2,234,255,110,158,158,210,32,89,135,172,30,153, -10,161,51,19,16,16,68,209,112,253,195,173,214,240,133,92,100,147,110,230,127,133,150,135,196,245,96,50,59,184,55,174,25,246,45,67,185,200,24,24,168,128,224,188,224,0,241,196,255,178,222,146,213,81,182,49,175,221,253,177,255,223,11,163,208,82,128,228,225,35,101,67,179,241,23,230,160,253,49,204,163,49,207,105,168,187,178,124,168,153,163,167,58,111,171,127,188,245,39,74,66,137,160,112,245,15,154,178,170,165,36,101,6,169,206,174,251,66,208,0,142,198,249,67,90,160,77,231,20,191,138,228,81,145,157,139,113,29,114,147,134,70,196,107,154,196,143,144,4,120,49,81,61,224,185,129,227,43,103,212,151,190,231,240,114,12,187,104,9,232,203,170,245,188,127,198,204,241,202,204,199,174,109,20,237,188,65,64,123,155,196,145,235,12,34,129,8,57,144,144,3,205,112,23,169,229,185,74,7,93,188,192,75,69,170,71,131,119,254,96,170,204,161,151,135,227,81,114,251,76,193,171,197,238,66,122,231,222,195,187,84,250,37,180,250,128,85,10,131,43,52,36,54,7,111,236, -187,224,30,122,203,174,128,60,57,24,108,31,246,98,148,215,197,81,119,225,9,235,104,38,69,103,112,53,95,74,41,32,231,14,117,58,219,60,160,31,81,240,234,212,176,57,36,214,254,237,254,211,222,208,38,160,160,40,197,69,103,228,175,20,72,155,209,14,68,255,92,46,208,212,248,143,55,233,41,3,56,153,47,20,145,180,10,9,191,174,41,136,24,242,184,51,111,167,195,238,178,91,80,229,128,187,226,51,46,230,51,254,172,118,117,216,62,87,187,125,193,225,180,232,45,118,171,201,110,181,26,156,214,121,189,238,240,190,240,143,127,51,8,117,5,34,144,62,244,201,101,240,178,179,245,124,133,48,76,236,135,135,19,60,94,9,203,37,206,221,124,183,128,115,226,56,94,142,238,196,72,246,39,59,158,2,193,232,57,86,76,71,96,206,98,205,209,174,53,151,24,229,118,165,217,44,181,169,165,82,175,215,25,212,7,237,189,94,60,249,229,247,191,200,187,145,152,160,3,4,29,77,208,84,251,67,182,26,35,20,52,137,9,26,246,82,213,227,45,252,221,153,78,48,215,242, -219,75,131,96,189,173,243,54,44,27,251,95,241,19,126,59,254,160,144,20,191,102,62,119,134,247,247,164,162,171,9,0,21,213,113,183,55,240,164,103,143,120,89,24,154,128,54,35,164,135,144,219,60,89,232,244,160,7,83,3,61,63,84,149,101,39,67,55,126,219,117,253,134,255,233,39,241,110,209,34,78,247,120,89,40,236,247,156,135,36,145,219,116,101,118,175,193,112,167,110,233,79,58,35,228,210,21,102,50,155,132,92,88,152,201,221,216,166,33,66,249,23,59,180,36,126,116,114,221,247,129,77,1,1,214,7,111,193,165,246,184,11,247,95,65,21,14,132,72,15,111,143,118,115,11,185,158,163,250,221,51,212,153,183,71,80,166,49,25,20,26,61,8,164,61,88,92,89,132,65,47,12,44,52,205,242,5,109,56,104,193,254,35,241,105,245,139,205,245,52,21,170,112,54,197,133,136,59,48,69,9,18,65,54,141,236,207,246,97,126,250,185,36,221,170,224,12,242,20,121,156,203,97,155,249,213,112,80,59,64,174,222,238,157,139,142,94,189,225,51,114,206,60,56,58,14, -66,22,249,57,254,94,126,144,243,63,175,1,72,192,119,229,127,73,219,208,3,54,37,219,212,25,18,253,36,40,81,234,34,122,79,84,47,19,53,219,71,94,187,85,65,146,230,86,51,172,177,31,175,200,118,21,53,255,57,53,37,51,141,207,64,180,208,52,91,223,105,158,104,100,62,3,250,226,7,128,9,220,163,1,152,118,242,237,60,174,211,67,253,22,149,78,233,153,70,64,230,117,63,143,67,40,189,74,188,251,50,140,235,180,239,32,212,174,73,68,75,133,216,10,255,201,20,32,119,146,83,18,74,2,100,254,138,33,119,230,129,95,251,156,100,10,20,40,54,221,31,177,74,32,106,210,130,145,221,60,100,0,217,71,241,173,220,183,153,115,20,255,5,140,239,204,250,9,138,76,42,157,221,254,53,169,205,114,175,85,92,0,151,193,106,131,86,231,83,254,219,170,149,139,211,106,86,248,87,137,151,11,19,129,120,34,16,238,55,2,129,141,188,31,161,111,215,254,209,203,253,185,251,99,243,198,153,36,169,88,161,170,90,170,16,211,121,175,93,251,45,188,93,2,187,89, -233,126,149,98,223,185,130,157,26,218,229,168,212,230,221,73,246,48,116,32,92,168,86,126,123,253,106,171,88,46,30,76,140,219,200,147,223,126,84,173,207,110,217,80,244,52,7,255,183,217,58,248,253,168,83,164,116,79,116,178,201,98,62,178,223,45,231,45,169,126,37,150,172,188,60,223,74,171,195,2,166,240,176,83,247,121,253,135,40,20,76,42,187,211,233,251,217,210,148,89,146,107,111,0,57,53,232,255,182,26,218,253,125,237,233,249,236,130,19,55,194,196,9,91,113,218,45,54,228,231,129,193,97,0,218,60,99,225,213,95,97,115,71,185,155,136,177,224,75,234,30,121,79,241,122,170,59,202,18,65,108,193,128,202,0,146,190,121,47,51,154,104,57,144,194,141,40,157,74,160,214,6,10,189,125,60,84,87,221,249,249,225,11,64,189,223,11,98,157,80,132,246,189,127,251,159,30,115,96,137,29,117,227,20,187,103,42,187,33,225,53,81,120,65,172,50,140,224,17,180,34,236,131,253,207,245,78,179,243,93,248,223,238,141,109,114,255,58,35,162,180,10,12,186,108,229, -216,233,34,130,194,37,43,163,16,97,231,243,22,225,164,73,2,47,216,233,115,131,23,173,189,5,41,93,154,125,157,1,197,2,240,14,199,225,153,70,248,138,34,194,170,97,121,176,38,218,180,230,206,215,95,86,228,56,51,167,102,83,40,215,254,223,105,113,120,219,18,143,103,44,26,86,252,115,101,35,111,172,219,183,9,254,196,22,136,189,166,88,157,245,12,247,197,18,82,33,4,138,242,241,104,176,144,72,66,203,163,254,130,58,99,113,179,72,10,113,234,186,178,197,34,191,110,143,92,141,77,254,177,2,255,106,60,222,162,46,153,224,26,150,10,18,130,217,67,4,21,103,154,196,71,80,36,169,236,12,142,67,190,4,8,218,70,29,44,104,90,160,43,177,159,69,178,7,17,74,98,142,79,96,125,219,219,231,155,126,57,72,137,178,6,173,253,40,244,198,14,52,31,213,136,184,206,84,118,79,117,106,195,66,63,96,4,191,167,209,62,61,199,181,91,232,60,131,47,122,104,51,128,224,64,73,245,35,87,210,11,23,116,110,237,69,222,249,244,52,81,77,115,59,109,164, -80,234,245,128,118,165,209,42,86,27,183,106,187,250,112,73,189,95,167,85,44,213,170,181,95,177,220,172,214,187,229,95,209,63,185,179,197,234,121,213,114,187,100,243,230,81,30,111,193,103,89,241,211,211,18,241,104,62,61,72,246,19,103,235,240,42,119,222,154,246,160,31,46,162,248,175,86,111,165,218,91,53,134,189,66,179,87,121,52,91,153,102,179,86,203,193,122,113,164,228,44,240,243,85,181,114,178,214,170,214,42,181,204,120,171,31,202,79,253,176,127,79,107,215,45,58,224,213,188,191,55,253,171,228,73,229,3,91,53,166,87,163,191,240,51,213,173,222,104,89,231,133,178,183,136,7,148,37,102,185,146,93,44,233,249,132,91,167,57,34,158,127,30,126,192,192,37,40,82,135,41,227,218,11,50,166,51,168,42,235,206,22,171,66,83,130,206,49,41,55,89,253,76,254,121,158,143,75,93,115,255,124,172,253,252,19,78,234,58,184,254,113,26,114,19,171,149,6,183,192,171,206,253,219,135,198,152,159,52,23,133,132,244,108,38,97,253,65,158,244,224,75,145,27,16,66, -130,139,84,136,10,108,210,165,69,106,115,251,101,110,180,97,232,133,118,171,187,108,146,250,49,209,183,227,0,114,225,47,71,253,236,160,12,116,151,97,46,168,83,189,73,42,22,97,76,89,254,73,111,227,71,22,126,13,90,228,128,189,83,231,250,196,118,81,155,229,5,121,149,141,196,190,125,192,189,110,220,62,75,148,62,25,188,100,44,191,136,51,242,65,26,158,171,7,138,48,71,95,12,224,123,23,213,157,208,249,218,43,219,0,68,0,34,189,244,66,245,205,63,89,188,239,190,71,38,210,38,12,173,206,243,30,192,52,189,99,51,11,113,224,39,106,174,127,98,35,154,154,180,190,54,167,199,139,234,175,50,62,213,225,249,100,9,25,211,61,231,174,252,132,110,140,178,251,47,1,241,163,133,185,80,145,59,101,55,81,138,245,80,250,40,151,119,185,86,133,195,50,145,70,146,184,146,9,4,69,117,48,49,250,7,50,88,250,44,201,180,246,74,157,201,212,100,212,236,28,72,208,26,56,95,203,235,129,213,42,81,134,50,167,253,8,197,30,189,102,87,226,172,116,191,168, -160,16,140,7,237,129,239,61,202,245,238,117,19,156,24,25,149,253,96,72,198,159,95,162,238,119,71,143,163,100,250,81,7,133,89,131,216,132,77,31,153,253,162,76,119,85,137,148,107,189,77,157,100,109,247,190,206,38,49,167,217,106,82,108,23,219,225,122,187,90,173,116,122,140,90,167,213,104,13,170,131,225,217,110,126,92,214,158,217,234,117,123,201,133,123,161,94,235,253,150,203,215,110,243,119,62,155,173,127,230,92,246,138,207,153,75,121,156,5,155,183,226,90,214,53,220,217,113,226,172,56,207,179,173,179,166,69,224,116,116,167,196,42,124,69,190,127,127,142,74,252,245,185,204,18,153,90,98,176,185,37,182,120,175,27,104,201,52,235,181,150,163,54,86,207,246,138,205,70,161,86,106,111,189,58,54,12,82,105,111,229,253,214,19,157,74,79,115,126,171,75,7,124,6,165,216,79,253,196,182,236,180,159,73,92,0,68,25,133,71,251,148,30,139,121,206,221,248,110,226,184,198,224,157,173,156,75,14,11,59,35,39,229,14,211,90,173,150,226,10,119,199,51,231,194,172, -11,158,43,221,161,125,251,200,145,187,221,250,9,241,185,43,219,237,178,197,240,120,211,142,245,250,78,138,220,138,72,122,111,75,203,43,40,192,45,82,175,13,155,0,245,239,60,114,69,71,110,96,133,198,51,61,166,57,84,155,33,204,84,160,236,114,171,141,194,184,222,84,157,225,252,219,101,0,185,177,154,241,192,192,85,2,121,135,171,113,231,229,185,97,71,155,240,60,104,99,27,244,101,17,46,189,192,17,94,124,26,124,189,65,135,236,114,35,98,200,155,234,150,109,101,75,249,178,10,238,145,238,20,11,52,145,228,81,12,159,164,111,121,118,116,109,47,92,241,96,149,231,116,47,23,184,14,161,152,116,100,17,26,102,189,126,238,178,87,169,117,251,51,196,220,68,187,165,254,230,238,204,150,251,120,223,228,122,127,109,44,251,181,68,26,136,161,249,222,72,137,4,30,32,9,4,74,186,184,222,118,27,14,75,101,173,38,67,199,247,159,159,123,173,171,220,174,92,56,182,216,244,231,159,28,194,68,145,213,39,174,48,183,113,206,92,148,223,33,178,152,114,255,132,160,235, -227,95,60,74,159,222,71,179,133,27,241,131,152,203,193,208,137,130,117,1,55,254,105,172,143,204,24,172,108,97,45,20,187,24,186,250,80,58,121,89,238,135,80,140,29,83,173,60,175,92,120,180,2,133,243,120,71,120,124,58,219,41,137,81,32,80,115,164,114,213,160,35,8,121,71,1,4,230,92,209,186,232,116,202,65,132,28,59,19,206,113,236,148,87,46,49,201,4,14,48,159,140,160,216,107,133,225,149,146,213,53,16,137,137,208,191,251,151,239,12,96,229,87,164,85,139,157,94,238,187,80,184,184,164,98,231,215,42,247,154,253,110,249,211,37,2,21,132,53,91,242,202,194,189,223,113,97,43,50,219,229,163,179,109,231,182,171,213,133,3,235,221,0,1,21,27,5,201,89,99,178,87,23,156,52,211,195,78,181,22,105,247,136,157,58,235,42,112,252,199,45,241,139,60,22,211,87,161,81,25,52,166,252,181,94,168,53,106,26,195,190,104,171,89,107,244,242,154,250,13,47,34,251,4,1,157,23,164,66,49,65,244,71,0,144,198,130,222,155,246,190,217,244,55,159,64, -175,86,6,76,167,148,179,102,27,105,57,203,185,178,201,157,181,154,172,67,138,191,138,138,7,193,200,247,190,94,87,222,145,108,164,246,66,110,233,175,173,27,125,210,25,16,219,112,79,141,248,62,222,158,205,119,243,89,59,182,95,227,243,179,228,44,28,134,128,160,200,223,109,193,84,174,112,35,148,75,133,31,164,164,234,32,149,169,11,199,26,1,207,12,66,231,12,232,48,185,173,52,88,191,74,240,27,175,79,142,214,220,99,131,153,78,11,224,1,0,179,215,125,238,93,66,123,114,75,80,140,62,34,190,153,185,180,9,11,222,250,55,38,219,149,221,68,119,164,100,212,237,237,63,10,239,198,5,189,16,14,151,200,2,233,183,129,178,3,137,36,66,9,78,69,121,250,3,243,128,73,212,36,2,14,179,17,192,250,47,191,33,29,224,91,104,239,174,118,91,44,16,230,68,238,43,240,90,21,50,211,253,15,162,207,24,110,250,108,22,123,185,158,95,88,2,129,153,169,250,228,146,26,201,113,153,165,95,13,130,183,132,145,219,236,29,5,206,93,46,82,161,246,61,187,238, -35,77,76,114,148,138,147,50,13,41,206,110,42,139,134,82,185,72,132,167,251,210,2,28,25,37,114,161,129,68,222,248,247,64,228,89,56,26,93,153,222,46,139,232,75,52,178,253,198,161,46,186,196,239,77,120,1,211,8,178,110,116,60,111,27,37,96,217,6,247,155,166,192,47,139,203,164,4,70,63,139,101,43,19,214,226,98,127,17,1,168,57,64,141,3,36,97,155,232,101,100,152,52,29,139,203,203,64,219,136,189,109,22,53,16,227,60,35,66,239,191,150,112,178,69,52,194,104,218,87,88,17,180,170,53,120,54,255,124,126,0,5,137,66,24,242,36,10,15,159,81,179,141,28,42,130,142,204,130,158,172,28,210,203,62,24,143,98,213,184,226,245,76,59,128,119,71,110,219,245,186,52,37,196,166,49,1,58,29,160,81,133,52,17,67,157,74,9,55,23,165,78,187,208,234,156,235,245,162,236,112,176,119,56,158,175,243,248,248,61,57,17,104,148,20,238,15,167,164,211,14,53,69,164,201,237,115,119,77,7,95,211,145,192,175,247,248,20,106,139,172,141,0,69,128,247, -207,114,109,130,34,249,188,44,205,109,111,2,254,40,193,164,10,40,198,71,161,130,5,20,37,134,131,205,94,9,35,139,128,111,0,249,21,153,111,165,93,229,167,88,249,153,166,150,67,49,58,28,109,36,158,87,153,160,75,243,62,17,50,247,236,221,138,21,165,219,200,79,52,81,89,253,213,36,133,193,58,227,124,109,27,7,55,161,212,96,99,225,216,221,199,200,14,249,201,140,50,218,91,233,31,219,125,19,187,240,177,44,3,159,84,96,108,128,126,21,33,201,171,196,244,135,152,194,114,137,177,245,57,196,248,126,153,14,53,68,183,101,184,61,162,100,107,62,30,47,170,192,220,201,64,108,249,172,189,31,52,247,224,182,254,246,122,21,82,141,23,43,242,22,113,189,109,114,245,163,248,12,218,115,43,6,37,68,91,37,80,61,148,33,237,93,4,237,2,151,209,134,192,14,0,6,158,201,169,213,95,221,192,28,165,114,118,62,184,98,144,111,75,220,174,101,33,73,149,122,141,140,191,159,93,65,207,242,6,179,127,81,229,96,119,142,123,179,8,135,187,127,215,123,193,224, -190,185,50,77,183,114,35,142,253,75,113,201,206,197,1,8,226,207,209,35,165,113,167,215,72,200,209,121,9,239,146,157,196,84,137,98,232,12,210,24,87,205,170,67,106,207,231,116,35,7,84,193,165,192,10,245,132,75,106,118,34,138,30,247,91,54,80,218,119,76,78,32,128,13,193,198,163,155,122,22,163,139,229,187,146,18,206,91,64,212,0,137,152,236,152,122,199,8,86,158,220,73,52,211,63,163,78,199,72,0,125,240,189,5,23,173,31,94,225,175,91,215,28,238,97,151,165,10,84,195,180,83,45,254,85,232,13,96,245,61,17,18,173,25,163,178,155,95,68,101,125,61,107,112,41,167,208,245,227,85,132,105,5,31,93,21,212,241,13,61,21,157,28,250,67,155,51,186,32,44,14,69,35,185,127,32,240,140,24,80,76,188,138,211,231,177,98,131,202,33,151,242,24,66,182,243,63,130,220,54,94,205,53,191,251,50,248,216,65,196,175,13,179,199,108,51,144,29,23,155,205,81,171,128,170,180,175,90,165,82,207,116,26,189,70,169,82,126,212,6,181,74,171,215,124,85, -177,160,72,214,40,112,138,205,229,74,56,194,159,120,16,223,191,101,157,254,183,254,183,140,59,58,72,39,11,192,131,159,247,123,155,192,21,210,161,122,83,180,213,71,2,59,145,222,233,154,88,202,80,100,246,44,203,158,247,227,181,174,242,192,55,21,250,92,124,51,146,20,111,181,233,76,179,17,118,122,186,51,77,160,73,1,73,188,64,131,194,99,145,245,20,141,184,237,209,2,223,167,109,81,242,208,15,159,124,188,57,44,218,83,6,150,94,46,19,249,238,18,247,119,246,244,245,93,154,31,238,184,82,38,35,147,2,38,69,154,40,70,18,146,221,160,17,124,125,153,174,96,176,44,140,19,27,61,234,187,82,8,225,228,146,13,205,25,206,58,175,255,123,90,56,223,50,69,55,39,112,94,136,18,237,247,22,239,222,206,72,240,90,4,61,191,95,68,178,0,208,0,82,197,94,243,81,102,255,150,19,227,166,34,194,95,94,40,73,224,85,9,21,148,234,244,142,169,116,188,74,83,55,93,220,247,92,34,123,27,118,255,116,48,210,174,162,139,179,163,215,150,24,2,125,125, -239,59,214,77,29,203,204,137,30,55,150,111,5,9,157,111,101,157,175,151,176,147,168,59,105,152,189,49,236,216,72,166,47,9,119,117,0,8,255,80,45,165,195,230,53,175,5,182,88,60,254,114,182,62,237,213,151,254,253,170,249,126,123,31,223,35,242,149,156,202,12,29,214,190,118,235,113,134,92,246,114,70,95,43,239,207,248,118,26,132,15,100,75,9,0,220,20,244,28,251,252,53,17,119,161,224,224,35,180,179,19,108,95,48,13,224,69,78,92,140,146,154,131,12,79,161,220,110,187,203,40,45,13,97,112,253,245,123,122,140,114,2,152,220,197,164,223,19,152,32,165,10,197,253,34,115,223,39,245,222,237,104,3,4,142,145,142,69,136,25,220,223,119,212,133,136,46,78,165,246,31,228,183,95,114,7,111,96,60,114,188,163,221,245,83,225,168,198,198,128,53,176,206,146,125,168,1,173,50,117,100,61,52,92,15,162,234,54,147,56,189,49,2,51,77,31,10,70,214,186,71,98,17,141,47,243,37,152,86,176,59,253,57,176,212,227,163,136,91,98,207,146,200,113,217,200, -3,40,113,247,141,60,173,154,60,199,199,188,83,247,192,235,189,66,179,211,233,17,187,213,10,216,20,217,3,247,251,60,54,190,159,129,245,121,29,233,68,142,253,82,9,1,199,175,125,129,142,123,0,202,137,252,39,222,94,52,22,106,84,215,94,189,48,85,110,43,158,218,229,84,254,199,27,224,171,163,2,102,11,47,109,163,149,49,255,103,201,72,78,170,185,244,59,42,68,198,63,62,169,84,104,251,74,153,250,239,151,189,108,175,205,221,11,236,35,248,232,112,46,127,11,85,15,178,19,57,237,92,97,96,135,138,32,22,191,67,40,209,60,60,22,97,224,251,16,2,17,31,70,158,111,252,151,240,88,136,67,129,201,97,174,159,208,72,134,81,53,172,60,230,201,134,131,128,63,62,52,15,223,136,78,205,88,164,123,238,104,7,68,191,18,152,197,80,142,255,254,228,139,137,65,224,208,46,240,7,226,162,42,140,106,29,42,195,85,245,127,19,102,113,94,93,253,191,41,79,141,212,138,15,77,160,103,209,29,139,103,107,185,208,111,3,47,161,211,75,59,193,60,41,218,4, -196,17,220,243,151,250,103,239,131,229,97,120,73,41,23,206,234,7,19,94,123,149,81,231,122,204,148,57,40,228,226,212,137,193,30,165,176,34,203,39,19,135,71,30,160,41,115,58,129,210,19,128,136,11,201,50,214,119,10,76,99,207,53,244,111,4,3,229,37,188,179,65,48,120,45,140,211,66,145,31,174,103,133,54,172,121,148,156,118,139,195,231,152,202,211,122,125,166,217,100,150,45,128,151,5,94,207,252,123,26,56,217,222,252,239,74,203,222,168,139,181,5,189,246,122,44,199,6,208,215,110,117,111,246,50,155,179,50,87,227,150,180,192,63,72,25,165,19,220,176,95,153,210,242,100,64,16,79,156,173,212,13,57,120,189,29,169,34,204,94,252,204,209,152,9,212,151,208,238,222,109,238,137,17,69,2,130,45,198,181,21,155,62,196,201,162,195,197,170,82,116,58,18,173,169,212,213,203,211,78,59,111,113,205,106,221,226,217,178,95,235,116,144,127,121,180,96,23,178,254,9,211,119,169,139,228,182,169,146,4,136,237,40,25,6,69,227,170,130,40,60,38,59,89,133,237, -1,8,24,248,108,197,104,80,126,105,193,32,173,40,103,22,160,228,82,209,93,239,76,135,163,36,242,252,241,229,40,34,26,185,40,43,234,247,161,14,1,235,24,181,108,102,143,254,122,185,157,189,220,162,128,202,38,117,106,255,142,104,86,20,47,139,141,105,37,25,173,66,171,216,42,158,51,14,151,213,233,214,124,55,79,239,241,80,194,173,18,73,52,250,155,213,198,245,126,98,39,40,136,88,250,90,175,211,233,14,140,43,157,197,74,155,113,94,233,19,46,230,134,231,189,60,92,108,125,142,173,191,231,24,0,159,52,197,45,249,34,255,159,178,149,210,221,26,53,160,185,223,79,233,88,35,225,102,127,201,19,121,170,74,95,124,39,240,84,188,105,126,132,83,210,200,121,78,42,160,65,98,120,63,156,157,11,247,217,198,143,45,74,10,18,163,212,183,56,232,237,26,62,231,218,129,176,77,47,48,1,107,229,181,192,254,99,153,197,162,193,171,109,77,186,156,128,191,233,70,193,254,246,221,37,249,14,30,3,142,187,115,26,193,207,175,53,91,166,138,102,191,105,134,144,138, -24,127,59,89,155,234,162,196,204,0,199,136,110,77,25,98,3,16,74,114,82,102,13,50,125,160,150,220,71,216,255,123,161,137,119,13,42,53,50,146,203,177,162,117,145,151,137,178,204,120,150,2,196,250,193,237,126,209,5,103,218,0,44,133,78,237,123,192,36,184,113,241,57,229,148,95,207,221,180,125,170,151,214,174,240,29,78,249,46,249,15,233,62,158,45,191,255,13,252,85,34,181,85,22,98,189,1,59,151,216,97,164,243,56,96,217,172,43,140,99,64,16,51,158,252,110,5,152,152,204,51,125,196,72,64,38,115,65,78,181,20,118,140,235,63,66,56,114,46,109,204,146,51,106,148,44,111,163,119,169,122,108,245,42,213,237,228,240,230,191,247,235,225,250,165,207,85,55,99,225,215,252,211,169,248,122,45,71,221,218,220,40,53,27,165,10,194,98,118,126,45,105,77,51,7,195,43,157,68,82,120,24,3,145,117,25,90,73,9,154,200,148,69,72,72,192,198,193,138,151,223,246,63,72,25,26,225,151,86,54,40,243,61,84,5,168,138,112,102,178,85,31,136,10,10,168, -133,209,198,48,36,12,101,136,114,181,193,106,174,32,174,178,195,81,34,5,251,230,100,145,81,87,55,10,255,149,36,20,110,155,47,113,18,52,24,8,153,96,81,162,136,164,142,66,149,91,106,181,8,198,224,221,212,99,67,121,21,91,131,230,19,196,140,36,236,59,211,8,162,185,135,155,24,9,244,250,231,25,115,7,199,96,104,5,41,97,134,172,90,144,109,156,109,146,144,141,252,13,130,89,78,252,161,226,247,241,152,144,243,50,33,228,55,63,38,250,1,94,116,177,252,175,205,221,28,53,155,56,184,239,87,20,234,57,173,125,38,171,96,133,240,224,15,246,195,221,88,2,56,248,228,23,240,134,159,239,41,157,157,55,125,5,207,109,168,157,204,155,215,207,174,225,178,29,243,77,40,22,58,150,249,96,237,153,76,6,107,254,147,165,233,90,163,205,179,154,78,182,172,119,238,217,175,26,44,152,50,185,243,231,243,109,99,183,60,170,210,162,125,119,73,243,185,156,169,76,182,186,246,95,219,60,231,89,227,113,117,87,7,77,97,85,51,9,136,108,53,254,18,31,48,137, -156,194,177,30,116,41,248,164,172,74,182,151,112,98,193,56,170,54,103,33,238,44,232,135,208,205,179,232,28,178,12,1,241,93,8,16,130,132,214,133,164,159,138,205,203,118,73,60,152,94,80,46,67,233,4,217,96,166,54,186,92,27,207,219,118,105,232,188,193,33,240,11,163,213,218,119,109,71,209,197,22,149,78,17,56,198,240,171,95,149,59,143,254,126,158,189,173,215,8,34,160,160,216,89,60,4,90,167,225,16,76,62,96,25,108,171,204,71,198,103,242,103,60,189,199,55,121,62,140,30,31,140,209,149,153,32,82,194,59,23,100,212,76,23,3,158,81,246,5,175,199,131,204,47,116,39,115,6,248,56,228,105,128,168,30,97,120,250,85,25,71,123,239,237,41,216,246,51,165,93,176,177,7,148,231,236,28,113,76,70,255,249,205,43,87,62,92,142,30,132,7,177,41,12,144,101,166,243,153,192,138,233,27,150,30,180,41,52,28,190,143,6,88,42,79,156,55,131,67,144,159,82,136,154,5,79,166,111,41,3,24,21,234,222,21,48,115,50,123,45,150,136,219,97,242,89, -185,73,149,188,55,58,250,102,87,48,211,207,170,176,41,148,167,161,68,55,177,46,32,232,34,89,178,10,237,104,65,58,206,50,54,50,46,159,215,173,181,29,31,80,234,5,78,168,79,149,39,45,45,213,158,64,252,253,241,245,250,19,187,101,68,124,92,49,132,254,151,161,185,37,4,18,148,119,250,207,112,47,85,193,157,2,187,187,97,20,107,141,250,139,35,79,146,123,52,44,234,197,136,244,13,183,183,195,63,2,253,168,61,27,156,192,53,200,199,222,98,0,110,112,125,179,61,135,34,160,203,104,48,110,244,181,252,237,181,160,7,59,64,197,16,239,235,30,22,67,181,48,208,73,254,8,242,62,156,5,26,68,225,55,57,130,239,15,230,101,127,16,218,8,61,135,8,195,136,224,170,108,46,243,223,135,18,208,170,131,239,38,79,17,12,140,241,131,93,252,92,142,179,215,74,251,240,211,51,117,29,158,52,243,8,131,68,230,88,109,106,112,131,215,29,76,18,38,237,196,164,236,95,98,232,250,212,245,156,84,94,246,118,73,61,60,211,49,254,162,6,33,121,53,249,200, -1,49,202,118,178,49,24,10,113,254,160,57,225,164,144,62,165,76,77,169,254,247,39,186,112,213,85,18,226,146,74,182,133,37,98,122,186,124,64,197,217,170,210,146,202,236,102,145,76,155,148,24,138,136,126,66,43,153,15,110,14,23,149,22,137,2,12,131,182,67,137,133,213,25,135,192,84,21,106,117,109,153,29,188,80,251,36,130,144,124,249,119,81,121,243,91,126,142,247,221,187,125,183,67,189,192,255,54,103,26,127,178,16,10,238,116,19,43,96,170,100,148,206,112,18,192,68,209,129,15,44,58,52,133,248,238,61,182,53,75,142,135,47,24,244,1,183,39,26,129,123,155,43,245,159,218,242,47,202,17,77,200,139,18,139,32,103,66,6,214,149,112,150,26,216,178,200,205,231,165,60,10,184,223,93,141,177,75,73,20,202,70,133,125,102,138,193,120,22,201,208,104,102,110,130,231,98,102,72,127,159,113,236,239,147,62,147,255,161,216,9,2,175,213,160,242,115,36,137,9,72,244,166,207,69,208,89,233,125,92,234,0,223,36,46,154,19,237,91,255,21,68,24,215,142,120, -10,144,40,134,69,35,251,22,100,225,96,113,62,148,27,103,187,178,120,198,173,189,246,105,117,91,94,54,39,202,98,9,82,203,190,127,48,15,211,209,119,81,184,177,204,228,29,58,132,135,42,55,119,198,213,185,88,96,248,233,54,66,98,214,48,9,77,20,163,158,208,150,217,107,116,123,238,240,230,56,8,202,156,230,199,156,223,174,179,171,49,60,123,54,139,166,120,83,36,208,96,209,165,171,126,7,106,245,46,233,188,253,55,246,151,253,243,52,45,74,114,108,116,235,22,156,115,167,51,205,14,130,139,48,149,56,158,6,251,101,225,231,190,39,172,47,26,239,89,160,183,92,62,78,248,153,51,216,54,13,223,120,60,135,154,78,9,172,32,104,112,135,157,129,192,108,194,145,16,8,250,15,109,107,151,130,102,4,149,238,246,51,5,175,131,216,81,140,73,8,226,135,105,183,2,212,96,4,178,66,57,153,22,232,207,15,156,131,81,6,176,153,239,184,5,33,142,219,126,84,129,23,224,214,84,47,57,61,195,232,184,28,36,35,81,50,214,30,154,135,110,108,109,59,130,130, -164,59,74,150,178,56,221,94,162,164,245,206,202,252,89,126,68,33,74,121,86,120,41,3,78,6,243,112,74,232,246,129,62,235,192,246,78,108,60,101,185,190,135,177,40,37,235,67,37,39,45,169,226,22,205,90,107,214,116,139,239,102,241,153,43,244,130,207,103,49,127,184,12,138,75,171,93,147,204,151,52,6,250,33,21,147,218,226,96,53,69,82,81,205,60,97,106,83,208,236,117,104,37,170,226,155,217,180,20,29,136,5,5,132,86,160,64,92,0,72,77,104,20,137,219,72,26,63,117,111,203,224,100,87,134,220,240,196,95,211,14,88,188,180,61,30,13,129,192,59,133,181,211,39,48,183,68,84,168,11,47,198,183,254,118,146,70,232,84,37,125,253,169,133,68,165,237,55,102,55,129,143,18,166,86,42,149,147,246,189,87,78,29,81,219,159,227,199,204,203,209,244,156,190,235,53,240,57,248,94,78,255,119,152,123,58,247,128,51,78,251,69,38,205,83,143,207,1,49,191,139,97,82,9,217,4,130,160,203,55,60,154,88,40,32,66,23,232,232,80,243,114,228,84,252,211, -192,195,128,2,242,154,228,141,191,172,54,57,14,4,25,125,201,208,220,205,89,11,4,40,36,180,234,147,252,189,217,114,231,246,176,193,100,206,39,137,3,139,186,160,109,183,60,177,171,46,240,4,220,172,74,194,205,67,184,132,87,92,158,199,245,36,235,16,4,107,37,206,96,49,247,88,135,235,191,145,140,98,93,82,239,75,81,102,123,113,109,175,179,178,75,117,130,215,229,12,44,210,223,202,106,137,87,137,23,187,140,211,182,224,142,218,166,170,207,213,182,195,33,207,203,82,123,85,173,90,185,224,67,79,116,163,157,114,156,160,228,31,105,45,249,40,136,174,83,123,64,142,41,98,124,193,52,225,112,39,254,193,250,141,16,26,83,238,243,138,98,30,247,226,246,85,164,84,111,161,10,226,37,85,54,43,36,193,175,54,110,32,194,8,72,103,193,0,167,126,215,53,207,27,117,106,214,171,44,111,206,192,89,12,44,122,227,252,203,44,41,218,216,226,156,164,87,105,173,157,18,209,61,210,28,54,147,86,98,255,227,224,84,11,97,159,90,210,156,70,59,233,52,82,97,64, -240,204,12,31,253,80,208,96,239,44,117,186,125,164,147,96,34,174,236,38,47,149,205,131,225,9,87,196,225,167,102,181,15,209,247,189,48,2,219,218,85,107,104,4,17,103,201,73,51,154,88,246,150,214,126,91,157,214,217,110,17,70,242,223,167,96,18,120,11,190,167,247,201,121,204,215,24,74,69,226,89,110,105,54,75,218,169,116,254,1,36,81,49,76,31,213,210,65,2,18,43,89,62,180,37,255,114,240,64,46,18,2,108,45,24,89,146,163,249,102,144,2,11,6,135,197,53,143,105,152,77,174,184,72,183,124,130,24,114,142,35,197,243,218,130,113,94,235,1,201,26,138,28,143,26,68,247,13,89,58,161,15,149,153,238,143,41,170,8,92,85,220,187,117,89,95,99,214,133,5,129,111,77,89,160,227,140,95,51,32,50,69,60,127,97,176,16,19,210,30,12,236,124,239,166,220,183,201,127,49,137,68,162,165,103,8,106,215,94,205,5,6,253,25,123,19,158,43,179,154,254,62,89,13,251,40,131,52,201,45,208,155,165,186,218,99,113,21,40,56,3,188,129,177,230,252, -134,211,213,245,197,21,83,236,27,141,161,144,149,38,132,160,95,107,74,63,131,168,75,219,51,227,141,210,166,19,133,76,85,255,221,127,226,211,43,101,66,248,254,76,53,24,248,203,67,131,73,124,252,129,104,95,207,30,61,189,186,59,160,213,241,232,19,123,110,134,136,43,124,93,68,239,53,194,60,121,153,168,94,120,50,83,113,78,240,236,20,173,69,151,248,123,198,43,66,144,14,68,139,202,202,225,214,152,178,90,226,2,246,148,126,130,72,74,66,242,230,176,87,220,168,61,211,113,135,35,246,166,129,102,87,102,236,223,137,134,91,61,143,40,125,240,201,18,192,240,56,231,50,154,92,226,31,37,91,241,165,84,204,112,157,34,160,141,100,27,126,220,180,124,223,171,109,170,175,11,102,151,67,10,226,183,127,120,142,186,105,218,235,111,92,141,247,139,91,73,133,53,171,159,25,50,138,51,53,237,159,17,4,36,170,37,104,16,165,236,161,219,38,169,45,143,120,241,80,35,126,20,164,225,59,223,51,82,165,176,35,77,171,1,219,130,28,78,140,93,177,179,248,25,90,126, -222,173,105,60,253,115,190,31,251,179,211,100,143,3,65,43,147,85,196,5,64,81,156,45,115,103,205,11,144,241,176,152,117,90,205,140,40,192,139,4,144,83,249,42,141,126,238,254,66,179,213,20,250,139,85,37,121,237,169,144,172,30,139,89,202,175,195,224,209,76,167,130,36,136,241,249,252,19,144,237,139,32,240,252,19,43,199,122,3,63,205,96,167,191,62,32,34,66,168,200,168,205,140,234,138,108,234,244,31,52,30,50,130,75,65,37,72,152,137,243,132,9,8,47,42,148,24,37,177,198,12,24,32,79,41,89,20,8,15,10,207,185,250,29,223,10,146,136,154,87,129,32,216,107,135,90,156,81,137,67,74,100,176,186,105,60,88,152,206,220,87,151,205,127,255,158,135,128,47,141,204,235,114,28,253,247,5,159,12,68,206,253,225,11,201,24,105,69,232,74,20,249,238,127,192,47,36,46,240,249,204,107,142,139,60,177,61,167,3,88,150,79,194,95,181,183,241,63,37,161,109,8,232,211,219,192,134,165,178,172,119,57,104,32,59,1,56,244,97,134,42,218,149,70,181,106, -209,203,236,183,1,254,90,90,127,97,127,179,33,33,237,218,125,15,224,132,48,112,189,171,140,125,236,20,224,4,33,169,191,199,112,209,13,41,148,127,121,52,239,24,142,138,235,62,149,190,109,53,92,186,162,247,236,132,209,218,62,154,238,79,141,65,56,88,60,75,68,9,195,161,88,248,24,201,136,210,88,201,233,228,67,240,142,55,125,79,114,90,74,10,65,41,97,137,181,130,59,209,178,159,198,4,216,78,228,28,242,173,189,146,194,68,255,2,17,208,193,25,221,230,75,137,235,180,100,153,95,175,143,97,230,231,115,81,195,30,183,72,182,28,42,5,203,253,185,46,128,149,253,32,201,157,219,92,85,131,205,222,245,176,224,142,142,100,148,218,15,203,14,248,10,76,42,193,139,90,69,108,201,236,114,1,193,152,177,179,198,206,194,220,126,123,202,119,20,43,176,115,224,97,86,97,228,28,211,71,61,93,68,125,196,31,88,171,65,89,38,171,106,69,149,167,99,143,237,31,44,108,102,188,109,102,133,28,175,14,60,8,145,72,114,124,14,150,215,135,198,172,108,246,163,154, -192,146,103,59,159,219,105,231,17,102,39,20,235,84,120,17,137,220,184,207,110,158,24,53,249,151,38,64,87,103,141,240,233,216,217,107,142,219,30,86,163,254,115,145,18,16,16,34,17,74,138,252,130,140,191,210,28,39,154,173,122,112,78,18,31,186,115,50,83,113,248,113,187,39,137,234,133,42,161,0,132,36,193,32,0,149,241,202,28,147,76,84,74,207,168,191,176,168,116,30,88,207,63,243,169,254,251,53,46,62,42,141,66,243,244,24,16,5,17,65,52,131,16,144,180,168,150,182,251,193,162,85,114,50,5,202,134,69,144,25,220,135,73,131,66,111,10,167,50,212,206,5,227,194,224,236,162,226,209,1,160,160,60,103,221,180,172,225,64,86,52,169,9,51,251,106,168,225,164,87,7,93,159,187,228,211,54,120,77,248,236,215,38,86,136,164,46,222,160,125,121,42,229,80,82,60,160,116,239,175,38,145,164,252,65,23,95,89,57,183,13,124,57,71,238,7,222,47,236,192,31,130,90,239,189,187,63,170,50,5,107,101,136,110,87,255,161,247,127,54,8,7,144,70,10,180, -95,203,172,141,55,22,9,148,84,96,156,238,4,206,87,68,204,176,31,107,80,223,3,65,166,15,208,11,205,69,228,119,239,171,82,199,1,80,49,150,218,2,243,64,44,45,31,171,65,8,142,55,51,239,7,142,214,12,144,17,88,183,103,31,196,59,255,44,255,26,206,163,67,127,45,147,229,212,199,10,238,150,212,177,184,126,83,142,167,201,103,212,63,5,47,50,139,149,149,30,15,135,166,63,49,59,45,93,244,183,239,242,173,151,200,91,219,4,24,55,68,96,53,194,28,173,213,68,162,95,226,16,187,129,119,69,21,224,10,25,161,129,67,147,56,162,185,156,142,232,189,53,145,15,73,232,3,140,166,219,237,113,57,194,122,11,14,161,107,60,162,243,133,100,180,154,126,153,228,44,255,2,146,207,238,147,100,251,207,231,44,112,191,40,127,229,241,39,82,232,76,248,196,48,196,61,91,243,41,220,150,169,85,208,223,28,174,196,90,160,95,86,83,79,54,56,248,27,247,168,117,60,139,187,255,140,16,69,137,166,5,222,101,89,228,116,74,15,40,106,12,12,175,148,219,20, -58,85,63,2,79,147,122,50,98,251,21,16,178,65,39,245,160,54,218,248,225,144,209,99,143,99,81,57,222,175,159,196,58,167,56,207,232,137,200,122,118,215,15,200,81,88,112,56,56,167,172,67,141,140,158,222,47,48,146,208,3,196,96,34,133,102,133,170,195,68,60,9,131,65,111,245,255,209,112,86,61,206,43,91,183,254,235,14,51,51,51,115,135,153,57,233,48,51,116,152,153,115,222,181,63,29,201,242,149,47,170,52,97,60,67,53,203,5,65,101,171,8,126,244,168,144,5,109,109,171,25,107,84,164,227,237,124,103,95,240,67,165,121,78,55,2,190,158,239,219,116,73,18,41,36,129,150,130,139,10,100,20,192,179,85,204,86,30,84,78,103,31,178,4,164,212,194,177,41,216,91,105,57,151,116,193,109,33,66,145,5,98,117,33,85,98,76,32,33,124,7,150,68,13,32,240,14,210,42,101,215,163,220,115,81,1,249,212,51,90,13,150,195,237,118,250,116,213,101,2,75,237,99,99,142,171,136,34,131,213,212,161,211,32,52,199,157,223,131,240,152,146,120,205,162,242, -29,1,202,179,255,51,22,227,52,184,175,132,97,43,108,201,235,184,124,44,74,219,88,128,32,112,190,231,115,159,164,150,38,44,159,134,234,224,155,147,215,24,46,86,44,15,57,131,245,86,225,192,73,219,225,110,160,16,200,88,224,128,161,37,210,148,181,138,4,48,64,5,67,122,241,1,148,81,160,207,13,238,71,77,45,137,134,113,250,66,195,136,207,232,23,193,8,220,173,39,55,248,223,133,215,59,136,67,5,127,232,188,93,98,168,95,10,0,42,244,169,99,230,156,151,116,252,107,199,225,70,203,246,141,194,77,83,140,156,149,20,87,154,176,132,60,219,243,37,230,131,116,180,210,224,231,148,161,17,216,97,223,182,185,12,172,229,94,20,164,220,208,221,92,104,128,59,56,51,113,208,238,250,150,215,40,189,69,184,230,254,150,191,171,56,156,112,121,73,96,70,144,184,98,163,168,32,226,211,157,133,243,197,108,225,153,147,191,247,169,45,253,249,187,246,40,28,237,159,146,81,175,225,223,173,113,126,99,135,131,253,134,215,152,235,134,220,39,9,191,41,41,117,203,1,167, -121,238,245,94,57,155,185,225,195,16,29,217,118,177,196,16,48,52,91,118,99,29,35,115,15,236,8,230,111,154,131,8,11,68,150,212,36,18,249,57,85,161,169,135,15,35,38,233,0,168,125,31,196,11,125,168,210,115,1,51,193,155,14,34,114,110,193,29,150,166,203,235,246,137,155,127,76,238,31,31,205,145,24,191,124,194,232,216,54,154,7,32,161,20,136,41,230,115,103,4,60,129,26,131,155,125,253,224,120,35,145,67,5,80,96,7,110,158,109,197,48,167,252,19,179,134,100,180,84,36,63,44,92,123,215,92,71,25,240,250,175,192,25,140,119,157,78,168,39,136,167,136,244,53,129,3,29,79,38,123,51,33,245,223,5,35,73,229,150,195,139,167,218,15,118,228,161,24,201,86,69,91,10,80,136,28,198,181,24,119,72,55,108,223,149,230,179,80,18,220,192,204,179,78,108,76,87,242,23,177,20,16,52,204,220,61,65,136,91,105,115,90,17,143,71,83,56,24,104,43,226,169,193,40,147,238,159,234,39,79,168,105,194,118,188,228,57,236,189,110,135,225,60,161,30,136, -73,142,3,219,141,40,47,63,59,108,49,3,250,250,108,165,103,213,196,7,107,176,98,33,159,153,177,236,119,218,192,159,182,72,214,39,182,39,45,255,226,103,239,155,81,234,174,65,75,130,243,110,27,76,97,240,13,122,48,47,201,106,95,8,11,163,10,115,206,20,0,7,115,40,189,29,251,164,203,234,229,223,31,154,97,16,194,9,211,83,93,98,1,2,249,208,124,157,174,247,65,128,116,1,164,104,55,51,241,28,44,197,86,122,120,165,179,199,163,29,102,204,202,23,197,23,117,215,97,181,122,233,177,8,209,217,248,179,236,132,191,126,2,140,172,12,191,160,48,147,241,167,233,48,19,134,152,130,39,162,113,34,92,72,32,250,208,22,42,45,80,50,105,105,31,200,70,87,65,251,159,188,121,146,6,49,75,139,18,207,146,167,224,243,34,190,190,210,142,249,88,247,213,103,103,108,56,89,70,111,247,89,111,175,168,98,200,201,66,242,40,209,125,175,183,45,67,63,65,57,58,29,254,17,218,26,178,154,173,59,129,128,10,161,32,2,20,13,62,255,181,48,65,220,142,27, -206,119,80,206,124,119,202,20,130,0,21,249,27,98,218,3,90,176,112,227,2,137,176,187,72,15,245,211,117,51,131,24,198,63,235,73,13,209,113,84,215,233,166,51,89,253,204,173,24,132,162,65,126,3,43,193,132,81,179,175,14,97,73,97,22,90,190,247,173,153,29,48,238,183,192,108,75,192,78,67,78,8,235,95,242,33,101,140,129,34,164,111,47,173,142,58,170,127,209,156,212,119,88,81,76,57,163,162,66,175,152,142,235,120,3,240,119,135,136,39,39,16,32,84,91,91,16,130,92,201,217,152,44,9,13,11,54,213,139,106,155,7,226,16,240,196,114,59,117,170,6,66,103,98,105,114,39,16,74,41,226,2,132,153,40,20,226,49,22,108,236,154,133,232,96,197,251,4,189,28,82,213,214,26,166,159,115,36,136,135,114,205,223,247,32,43,99,141,36,156,112,168,131,19,176,174,68,5,209,31,197,11,68,1,68,46,210,251,142,160,103,186,136,99,123,5,90,211,239,12,64,70,233,78,45,17,210,10,64,173,177,230,235,173,248,142,112,54,169,95,90,107,49,43,234,232, -207,99,61,70,24,62,247,184,255,127,78,238,253,29,178,61,123,92,39,11,213,117,152,212,147,252,245,228,148,90,71,242,50,187,190,167,172,239,137,139,100,1,5,218,21,159,201,240,167,201,120,250,19,35,230,126,9,214,231,8,57,41,2,222,82,241,239,96,155,164,239,203,192,10,157,228,115,183,203,235,49,236,82,130,80,36,179,62,204,183,185,172,188,75,197,75,100,224,161,73,80,102,249,32,12,240,50,208,185,49,212,132,248,114,98,122,70,38,151,56,87,82,6,190,119,138,183,147,66,235,170,46,127,219,50,83,33,88,233,91,138,23,153,104,167,102,2,26,235,168,82,66,128,199,78,129,1,98,19,114,235,11,133,102,37,115,153,252,115,35,116,184,120,104,103,40,176,236,207,29,183,181,235,50,80,28,66,224,107,98,38,223,32,47,154,204,135,89,116,10,18,106,16,180,95,43,6,205,248,103,156,57,110,236,254,109,133,172,30,215,61,159,112,207,109,158,102,37,212,212,112,56,62,135,20,137,210,145,49,158,25,218,38,82,180,10,190,97,61,203,95,240,7,188,36,132, -102,212,78,96,71,237,179,237,251,247,183,208,202,139,120,47,124,0,246,84,116,70,4,140,51,90,57,77,132,120,38,214,193,237,154,215,206,63,80,112,72,69,217,156,45,161,144,27,4,236,17,62,225,52,13,135,157,80,34,24,186,20,46,178,130,219,156,136,217,213,177,117,122,59,61,43,187,96,229,144,136,158,124,74,135,0,127,223,171,9,202,246,18,85,25,151,206,105,16,213,149,196,147,166,80,101,184,140,180,24,23,51,162,188,172,82,100,200,83,117,13,78,18,60,30,98,222,95,210,245,132,120,15,252,173,222,242,224,94,87,21,60,214,33,207,12,103,28,116,29,181,180,248,129,60,72,44,37,38,202,68,73,152,117,178,28,210,156,148,71,136,85,196,54,19,164,234,112,59,93,142,199,95,191,134,244,85,247,29,79,171,215,72,38,236,137,51,223,253,202,51,162,198,167,140,25,199,34,240,20,248,141,146,16,69,212,192,241,252,124,135,109,10,217,135,165,91,150,137,39,113,86,113,225,179,126,96,52,76,198,88,241,17,231,215,251,179,211,51,174,58,39,157,69,153,185, -117,183,52,102,11,79,195,253,201,47,105,78,34,194,241,151,166,179,176,192,144,33,91,0,202,63,213,57,222,28,227,167,163,156,196,193,26,102,91,79,63,175,150,32,51,248,2,140,186,9,177,20,179,255,148,239,56,101,1,7,116,236,237,43,100,75,206,145,47,151,166,2,143,41,72,89,58,162,246,51,62,39,220,157,194,204,17,121,12,75,159,12,246,210,36,52,158,89,83,121,47,239,247,160,112,110,71,106,38,85,93,134,22,245,208,242,78,240,125,41,103,38,169,142,176,225,204,161,105,8,207,172,139,144,14,234,123,209,103,101,167,147,167,97,180,12,205,102,245,213,202,135,219,88,141,252,175,69,111,121,107,47,248,220,89,90,119,167,240,181,241,72,74,217,73,243,13,136,181,143,199,32,55,182,16,223,84,130,64,172,224,64,28,190,129,199,194,156,184,45,18,217,160,77,95,34,232,142,144,94,38,126,26,173,143,243,193,91,68,113,134,3,112,143,120,212,226,65,206,100,163,235,3,111,239,161,214,145,157,62,210,82,176,3,93,162,75,239,217,168,121,220,108,86,247,111, -139,115,129,97,118,114,100,65,84,152,103,37,133,32,65,216,159,130,92,195,69,249,198,215,103,219,164,52,128,56,40,28,46,16,192,14,2,150,218,18,123,211,185,240,161,57,120,125,222,193,116,77,69,89,45,59,236,157,9,244,46,80,2,141,65,208,147,240,17,13,40,156,68,140,52,101,130,242,129,144,146,200,178,28,64,138,32,201,52,71,120,222,227,113,196,198,61,227,86,138,87,195,232,31,67,146,0,240,129,114,118,193,14,212,157,149,134,51,13,143,78,206,97,217,152,202,140,57,203,18,9,64,124,245,66,135,171,193,215,17,80,115,203,74,223,170,19,95,252,122,181,29,237,215,222,95,60,135,196,246,186,166,179,144,169,16,55,241,35,36,221,135,234,239,155,143,249,23,162,128,52,42,193,109,239,67,211,95,108,214,75,158,136,205,47,140,255,192,118,230,173,56,223,127,227,199,253,95,173,192,230,63,172,130,2,83,13,228,158,216,200,101,224,208,56,109,15,195,14,152,205,56,230,64,132,101,200,223,193,214,221,63,195,97,180,50,243,149,178,59,114,250,157,245,87,182, -186,113,112,198,216,17,134,149,83,97,174,21,124,104,246,199,108,75,165,70,148,150,17,52,139,31,244,166,251,141,142,159,200,89,114,4,221,156,141,47,143,241,17,41,128,48,5,51,66,154,13,222,102,48,115,242,107,145,141,1,227,57,204,126,211,137,143,114,152,9,75,138,5,98,207,179,212,82,9,126,129,234,140,193,162,68,178,46,228,73,108,156,168,234,100,163,214,249,186,213,236,247,117,125,222,251,203,240,237,127,67,36,123,61,20,38,84,232,159,131,187,85,196,164,174,220,155,33,136,243,207,253,223,167,223,73,190,138,12,86,234,45,159,202,231,39,212,127,142,3,250,66,85,159,198,234,19,180,132,69,117,105,228,224,5,228,69,194,91,134,251,169,103,181,63,205,226,95,3,140,222,216,163,244,87,34,62,20,31,30,133,232,16,173,118,180,112,110,162,132,121,203,24,143,144,13,84,75,73,24,156,114,168,103,163,186,65,101,67,77,107,214,109,49,193,211,184,155,40,66,233,213,123,140,102,79,13,156,207,87,163,73,121,117,249,204,76,148,188,237,229,251,195,19,48,64, -18,18,217,9,44,244,199,75,178,148,34,149,233,30,22,19,119,87,46,36,32,35,165,159,112,178,62,147,141,176,207,197,143,123,16,1,46,72,16,56,100,160,151,85,210,67,95,146,64,62,101,226,0,172,235,205,191,135,114,120,65,67,134,160,34,74,143,78,84,6,255,184,131,36,97,133,101,66,12,164,129,92,140,135,213,64,64,251,177,144,179,223,35,222,31,66,9,38,5,130,110,162,112,53,33,165,22,182,6,224,31,129,196,89,203,26,252,11,213,160,64,138,246,239,2,2,181,137,7,86,92,148,215,195,80,32,238,22,135,241,133,181,138,97,197,97,68,88,118,70,211,95,189,71,243,45,146,108,147,232,246,121,88,247,92,211,216,17,99,170,250,16,240,207,246,52,253,30,75,154,21,239,175,196,240,41,114,154,36,233,53,226,4,55,80,255,247,240,63,108,121,143,25,230,14,92,251,29,49,201,22,152,147,238,91,73,237,124,159,46,23,31,172,127,242,186,235,82,16,160,30,224,116,126,109,132,235,251,182,125,22,221,97,198,203,153,86,228,79,116,43,19,173,33,169,94, -193,30,22,94,144,237,17,84,127,207,211,60,208,248,189,181,68,57,101,6,59,176,252,49,133,18,78,30,255,54,251,49,89,152,236,36,140,247,28,217,136,165,190,100,57,182,4,213,53,212,120,43,230,111,4,159,71,60,252,253,248,189,29,63,134,251,120,74,149,159,132,78,68,97,150,209,25,9,24,131,247,163,172,90,35,203,53,120,32,68,160,191,104,27,18,172,85,95,17,19,127,119,132,62,60,166,253,157,24,191,216,10,126,230,211,178,51,248,191,159,52,83,240,53,50,129,1,178,51,81,206,253,31,14,46,29,134,128,220,215,37,248,203,20,188,19,156,155,13,104,245,57,42,102,236,117,19,8,241,247,70,105,253,198,199,166,4,42,191,65,178,212,69,114,199,15,122,129,196,160,213,71,16,214,118,131,169,197,162,15,127,200,88,103,97,119,107,19,131,173,181,108,136,47,159,18,69,232,242,161,226,178,131,132,212,126,220,180,53,157,172,190,173,69,2,39,209,96,173,93,241,113,249,123,10,22,49,211,127,86,80,48,204,51,251,15,236,181,44,12,228,230,154,36,110,124, -110,72,68,4,96,16,17,130,35,223,16,141,138,111,133,249,205,165,204,160,133,130,192,8,38,91,7,41,202,72,42,234,240,204,194,242,127,80,80,224,214,103,138,230,115,202,25,132,162,138,145,200,166,36,119,29,170,165,21,247,194,29,86,72,232,48,234,51,32,99,176,115,112,51,9,30,8,44,175,146,192,45,174,181,196,51,64,160,46,1,70,253,161,33,128,16,82,118,98,37,216,225,2,1,217,15,135,127,44,225,222,193,227,170,126,89,250,70,231,215,67,94,190,145,99,216,25,104,136,99,39,234,232,29,239,252,213,197,45,18,169,120,231,82,151,193,40,148,48,195,154,128,48,13,151,36,242,149,171,38,191,239,255,90,204,229,253,141,42,50,219,189,62,234,104,55,253,99,151,243,37,144,60,137,91,88,68,161,37,15,123,181,250,227,69,211,88,198,13,61,217,77,200,200,86,134,151,129,184,103,179,172,201,203,94,54,211,13,228,85,20,207,240,252,227,231,122,4,174,1,51,42,29,1,34,18,170,109,136,87,213,56,211,72,253,231,11,8,132,39,244,49,162,27,211,179, -147,176,34,237,234,201,40,253,195,237,114,125,192,52,75,242,221,241,14,187,190,6,53,160,44,166,164,14,16,91,149,173,52,140,1,36,5,251,146,158,154,69,141,196,198,42,39,237,127,253,185,246,121,223,87,199,132,5,10,184,221,199,47,219,228,54,253,154,254,66,227,215,117,216,251,126,175,216,169,101,117,88,147,136,87,78,249,173,209,222,110,130,4,199,1,99,71,214,134,176,126,164,189,16,47,135,45,187,125,3,7,35,215,240,83,145,219,170,214,69,119,111,10,157,150,168,243,222,8,154,153,222,202,45,117,122,179,29,237,147,151,235,160,127,10,123,19,60,187,253,148,176,191,112,45,233,197,82,195,191,106,163,97,139,171,8,210,34,204,150,203,152,52,1,68,166,6,28,168,235,240,248,21,81,154,65,26,127,32,79,197,154,110,238,141,144,78,24,73,248,128,188,147,208,173,124,146,129,106,131,98,197,218,70,161,183,3,176,197,201,17,91,230,231,89,203,161,139,34,166,133,142,72,226,141,149,122,223,63,7,82,66,5,191,167,67,116,158,56,49,135,115,71,143,127,212, -198,179,102,245,242,182,57,224,69,193,94,228,160,63,55,58,186,206,109,16,195,188,178,193,60,29,186,32,60,252,105,148,181,147,126,128,169,68,75,229,255,236,119,178,31,177,212,231,237,191,32,8,3,165,236,73,73,129,215,57,224,54,123,45,143,215,35,113,233,188,224,24,85,48,235,186,175,183,75,92,68,196,33,182,100,175,43,213,77,52,125,169,59,236,69,34,241,220,104,226,220,186,206,89,185,95,16,242,107,152,51,140,174,20,211,88,201,73,147,230,68,255,121,153,80,5,110,242,32,231,221,118,155,228,46,73,195,10,94,111,155,68,116,80,60,54,57,58,77,206,81,63,144,36,205,159,44,144,226,252,92,217,2,54,107,186,115,188,51,69,87,148,188,58,63,188,172,204,120,133,212,230,152,178,97,76,205,163,210,75,234,177,184,185,191,250,93,174,239,34,183,89,47,64,122,79,170,46,42,167,163,210,230,6,45,183,252,22,3,163,24,156,131,250,7,28,100,123,128,37,146,104,31,149,136,252,247,247,20,255,37,16,182,48,231,16,27,238,176,31,142,176,85,15,42,225, -247,245,170,249,235,121,61,110,110,138,126,112,78,160,91,217,205,132,124,245,29,136,242,77,199,78,36,254,243,70,45,38,200,84,232,235,202,151,71,217,5,9,37,31,54,109,247,234,186,133,28,48,161,116,127,184,42,181,64,164,213,40,113,198,129,0,163,132,68,114,144,205,214,179,142,15,32,63,204,189,222,65,81,250,15,96,164,24,129,172,116,114,148,130,10,150,151,14,232,151,231,218,54,14,2,233,94,48,65,140,113,19,245,76,209,102,110,252,217,35,176,183,222,225,26,166,240,127,16,22,84,193,218,59,98,239,254,82,206,149,151,66,88,86,146,199,175,45,23,216,5,174,171,170,30,19,84,53,21,69,196,252,75,151,162,102,199,190,205,130,174,68,196,197,138,72,240,98,66,120,51,58,125,145,124,108,61,38,209,83,72,76,63,229,16,125,55,0,188,79,208,226,236,135,119,114,240,170,158,161,155,55,94,87,209,153,88,21,5,11,75,168,132,144,206,113,35,22,78,176,176,90,167,186,210,15,65,59,227,74,38,130,205,201,104,123,250,140,128,43,96,108,125,28,217,163, -212,9,47,253,214,206,103,234,1,174,113,15,220,126,234,183,12,19,191,15,2,217,44,4,204,29,154,38,12,247,128,89,36,46,14,198,245,140,216,127,167,5,88,106,211,152,141,219,112,228,220,167,53,166,240,123,114,247,193,238,237,223,42,57,30,10,102,100,97,215,73,85,219,231,49,141,26,253,18,169,1,187,203,43,138,158,253,69,248,165,168,180,165,13,120,114,72,2,194,87,151,152,115,241,216,11,2,54,24,89,145,236,3,9,104,25,148,255,163,198,109,110,97,164,228,203,16,74,166,76,83,190,166,196,116,135,228,120,72,251,11,130,11,235,253,101,164,67,238,76,26,90,10,181,102,100,60,182,103,82,66,170,47,245,141,226,113,181,13,158,228,126,211,39,116,156,236,82,76,158,26,246,209,81,22,195,86,60,231,176,249,97,54,102,166,112,64,132,248,148,45,168,175,6,187,202,148,224,65,113,133,66,219,248,191,163,133,104,90,151,4,66,165,221,166,201,20,58,148,31,30,101,11,167,88,253,104,100,185,92,13,214,253,237,221,236,94,32,118,185,32,204,154,36,63,108, -186,14,210,253,159,144,41,173,89,201,13,131,210,135,70,214,124,12,237,15,32,160,158,161,218,94,203,92,114,49,5,67,82,128,80,107,148,128,9,105,22,166,17,16,248,88,164,84,32,162,195,179,43,4,194,230,196,147,101,14,1,71,255,128,78,109,10,193,233,8,109,204,117,193,218,130,29,128,129,124,56,208,175,37,80,121,85,63,72,97,166,180,37,180,44,160,4,169,42,88,45,75,8,43,24,187,0,79,74,150,20,219,195,31,245,136,222,121,43,9,2,20,51,22,158,86,69,68,51,101,23,17,120,186,194,214,242,242,200,67,186,61,241,88,128,84,35,224,100,208,56,193,128,156,92,60,155,2,128,98,224,148,38,15,212,182,112,80,45,29,181,55,71,203,29,115,33,198,8,230,150,54,4,131,33,203,19,204,249,116,141,181,248,222,67,54,3,138,192,183,113,135,132,15,115,224,181,142,225,123,243,193,114,241,97,28,132,76,81,85,247,151,251,88,149,247,255,70,45,74,143,207,50,78,20,37,73,60,133,231,178,130,199,193,178,224,29,220,75,203,26,51,195,59,197,247, -5,87,117,41,69,11,166,155,141,198,96,212,200,255,28,215,113,213,158,67,165,86,249,171,97,101,29,238,43,23,11,179,139,185,19,177,240,54,39,15,95,254,49,10,152,231,107,124,21,84,192,231,177,192,176,12,114,91,113,254,9,204,231,225,170,92,132,162,187,75,218,127,152,211,127,133,203,236,233,49,116,78,22,155,241,128,221,25,0,164,119,245,159,208,238,54,138,16,227,91,157,53,174,15,55,39,171,252,208,10,223,69,76,3,102,128,211,78,117,105,14,63,226,185,192,186,77,47,39,39,179,252,23,243,159,214,221,85,132,20,108,209,252,89,113,105,46,14,49,176,180,30,38,27,193,136,138,136,200,80,222,246,191,202,124,97,61,210,196,175,170,204,2,106,181,195,146,107,156,147,7,170,240,151,141,72,141,137,9,254,99,136,191,195,231,111,193,207,227,92,95,8,114,89,159,50,32,5,78,32,48,157,170,101,87,166,40,1,232,23,62,149,145,8,87,184,29,134,46,149,179,124,22,20,20,115,218,116,107,130,166,56,199,90,143,153,15,196,66,30,81,136,101,94,105,114, -158,77,211,27,245,208,112,79,146,105,224,248,208,39,197,11,133,212,44,135,230,251,90,174,96,65,44,100,199,218,66,118,201,33,162,202,136,221,143,184,102,32,138,136,162,177,128,139,176,166,186,150,254,27,245,65,101,80,146,57,62,201,202,79,33,162,161,107,243,219,52,227,34,230,161,221,34,68,254,169,85,228,118,91,137,191,147,187,51,228,35,48,59,117,127,143,151,135,65,162,242,76,171,231,204,9,136,161,72,104,208,22,140,245,29,183,56,91,158,154,60,250,173,146,192,3,72,6,203,24,26,109,165,47,252,15,3,103,209,233,51,124,30,151,250,171,185,202,154,16,32,50,127,219,65,251,143,240,254,143,93,126,67,87,0,44,46,61,107,247,30,36,103,18,77,107,184,107,237,255,159,71,55,127,201,117,150,187,29,56,70,56,138,162,238,98,124,66,33,215,213,75,237,88,96,39,7,177,30,6,23,101,142,237,0,159,140,36,12,240,238,95,136,99,137,55,58,185,221,122,239,120,235,64,170,102,94,72,85,156,37,128,92,239,207,46,207,13,63,32,139,159,103,99,63,117, -82,89,141,85,249,89,208,202,250,57,236,108,76,14,169,80,42,166,63,63,137,134,197,12,108,38,129,89,12,12,156,163,243,233,250,75,19,43,75,59,155,152,179,156,4,250,167,150,119,228,98,210,215,233,250,88,12,215,111,213,171,115,83,35,135,166,169,153,200,227,95,227,69,216,114,152,245,78,85,239,23,171,175,70,32,233,148,150,135,244,161,18,215,216,25,26,203,218,39,212,60,52,248,196,195,204,118,161,249,137,177,81,193,224,210,35,18,131,156,98,148,116,161,126,230,12,24,71,209,131,78,99,150,231,214,15,239,70,68,40,189,32,68,216,101,232,122,157,3,218,216,48,164,18,32,0,240,234,158,183,0,208,49,148,36,121,24,185,32,104,110,132,94,65,189,40,165,129,114,162,78,201,190,122,130,117,10,180,58,116,116,213,14,153,232,90,1,48,184,54,235,131,132,88,128,152,64,41,242,137,113,226,7,151,209,162,141,34,122,162,92,4,80,187,45,138,150,217,117,97,0,146,105,97,185,75,162,94,84,202,59,213,55,131,75,115,165,215,116,22,3,83,35,107,35,148, -22,172,243,243,49,250,12,134,39,165,159,149,140,74,238,133,25,55,15,17,103,31,108,94,87,83,33,59,230,193,137,220,131,111,46,65,66,207,133,60,19,82,34,189,58,215,237,115,187,191,186,106,250,172,72,133,115,26,225,140,150,212,172,87,153,204,154,250,143,187,188,166,210,31,194,175,117,255,196,192,90,121,12,191,232,202,220,33,73,71,0,104,110,156,174,238,136,178,51,227,196,231,150,239,57,193,169,93,122,43,142,94,53,46,238,107,34,211,130,247,215,44,213,246,151,220,10,86,15,79,96,63,63,102,132,68,108,83,119,233,163,182,20,120,102,241,3,227,120,244,167,144,32,251,200,74,124,154,82,6,80,80,249,183,83,211,153,82,205,233,32,3,127,63,0,105,190,120,149,84,197,249,24,213,43,62,218,41,241,229,13,64,68,189,74,35,226,32,204,70,138,76,41,62,136,52,250,4,57,207,204,114,58,125,138,169,184,74,135,200,189,132,62,123,59,189,179,189,199,204,240,150,64,159,55,37,120,81,244,53,160,220,154,23,72,133,53,60,211,9,245,141,200,127,243,39, -124,42,103,236,17,226,55,130,166,112,39,164,150,50,113,9,136,74,130,70,74,24,252,213,226,225,241,13,32,117,224,215,192,88,3,68,163,24,40,217,191,56,226,250,239,114,141,250,193,72,156,119,76,65,34,153,0,180,71,157,159,153,40,244,79,159,78,21,66,72,138,61,88,232,185,1,196,174,221,92,229,238,34,146,238,41,52,98,160,239,146,15,34,199,158,155,10,82,152,48,99,97,198,230,45,32,32,68,10,45,15,88,74,83,131,11,147,36,161,196,82,100,169,170,242,40,245,39,133,151,216,231,52,126,155,135,20,90,11,20,219,194,148,129,234,28,181,127,250,102,163,115,146,67,81,86,110,77,97,63,179,252,40,129,128,117,156,227,190,144,198,88,231,164,63,13,208,183,45,28,155,154,1,179,86,84,89,32,51,91,153,9,98,199,157,68,206,245,152,108,163,212,235,92,191,111,237,87,86,216,87,220,244,184,24,105,74,240,106,149,51,126,101,237,208,139,168,129,71,190,6,169,17,39,218,45,142,56,195,143,244,158,66,6,6,42,29,112,197,235,248,97,223,157,16,94, -110,239,251,86,10,113,85,37,55,252,140,188,128,250,81,192,232,210,145,151,38,46,193,20,131,1,152,187,21,139,83,200,28,152,96,54,90,51,152,30,232,23,234,135,178,114,53,27,20,31,18,49,193,208,147,249,178,166,31,19,91,208,29,72,196,218,1,171,253,95,27,83,153,129,51,210,65,151,140,212,42,18,35,69,200,152,205,85,190,157,49,123,116,198,137,1,140,112,97,118,38,137,232,43,12,81,237,180,100,43,107,173,91,224,98,139,16,200,217,129,105,245,247,59,171,222,95,238,225,85,3,143,70,175,184,121,103,197,68,72,30,241,246,177,66,156,209,141,172,95,186,142,54,34,185,52,165,99,168,6,232,252,134,98,92,97,76,203,165,115,0,124,60,129,84,200,186,132,181,58,220,55,229,3,237,217,156,187,21,133,121,0,158,54,77,106,212,10,58,222,16,90,188,230,47,12,70,219,207,28,139,75,42,145,8,179,192,13,190,170,216,44,104,173,106,64,208,127,71,41,1,147,211,204,36,200,50,111,190,160,180,64,200,193,136,29,18,16,206,176,191,118,146,52,187,186, -52,35,34,33,24,116,181,172,186,201,152,7,133,84,204,124,32,185,175,1,29,88,32,125,36,95,114,142,133,196,24,65,12,138,228,5,37,178,130,166,226,130,21,105,138,252,172,145,60,31,232,44,33,4,239,32,44,104,206,168,226,52,88,16,182,212,20,68,213,102,198,162,120,78,64,146,133,76,211,48,97,2,44,21,50,47,74,67,152,124,110,152,1,83,79,79,17,176,185,124,38,135,137,141,82,240,37,70,186,15,5,242,35,120,76,199,178,56,180,14,6,149,102,108,37,51,114,132,211,104,185,29,238,231,119,13,216,132,211,239,18,110,234,98,131,11,211,105,125,176,27,218,102,151,202,197,89,233,243,127,89,87,125,78,171,94,43,148,61,126,233,156,85,244,167,203,127,108,100,128,129,220,210,231,68,97,123,59,62,124,90,173,197,161,172,69,107,217,68,86,183,64,91,48,233,50,32,198,99,243,179,254,106,141,212,105,246,119,17,217,142,111,165,125,107,8,238,120,34,178,159,91,34,136,132,143,173,38,26,114,91,237,184,125,116,32,147,64,67,130,197,56,148,113,125,99, -1,141,232,82,54,41,6,101,209,148,136,127,36,43,55,12,22,6,145,254,66,113,105,110,54,51,89,156,252,25,155,112,61,105,40,28,14,111,12,143,156,174,192,202,255,252,116,91,40,39,236,126,120,219,247,159,253,49,157,10,161,47,212,254,96,7,167,153,127,192,234,173,86,226,190,158,62,239,210,114,240,133,221,16,31,156,112,177,13,207,2,166,16,0,75,36,96,49,59,238,189,99,48,239,46,163,253,249,14,136,44,204,61,186,12,95,192,166,224,50,172,204,97,147,245,26,176,203,2,17,67,114,26,30,17,6,69,122,149,108,197,181,16,0,19,192,219,218,190,226,122,221,96,196,218,223,100,242,81,204,79,171,226,15,9,79,188,65,244,156,157,48,33,37,3,224,1,20,223,178,101,45,165,201,222,193,251,9,250,53,228,3,160,168,27,249,151,103,231,162,80,69,35,144,18,236,142,71,50,61,141,34,171,210,12,8,35,8,235,77,14,75,111,32,116,39,129,173,114,68,48,173,99,82,247,64,208,16,121,232,124,205,220,59,8,147,78,253,159,160,20,30,8,145,157,133, -35,203,51,1,137,83,59,238,212,215,73,56,111,212,120,238,198,137,239,169,28,25,181,135,169,137,112,122,116,62,247,224,218,178,34,181,235,173,121,184,157,135,92,61,214,38,163,157,135,54,255,102,126,183,219,117,71,72,75,87,2,136,190,47,224,121,147,192,161,0,250,237,199,34,237,210,89,62,219,218,142,10,249,239,36,125,58,164,33,8,168,161,241,213,128,246,126,104,237,243,125,244,14,58,76,111,88,100,122,199,140,153,11,243,187,229,63,237,184,15,44,78,220,208,250,71,71,93,19,222,187,131,165,41,92,30,136,8,26,10,112,83,127,25,62,139,250,159,249,227,165,145,66,236,80,63,75,194,57,243,36,117,185,101,96,172,39,189,32,143,182,206,105,140,175,174,134,68,148,203,47,141,35,159,84,94,89,210,50,169,87,121,62,14,64,136,42,153,140,108,141,100,84,52,44,168,201,176,176,200,85,132,55,172,180,113,44,151,67,81,128,115,78,98,15,110,173,90,27,38,161,117,97,131,222,20,96,220,138,151,34,142,255,253,21,210,140,48,65,231,115,183,84,15,41,30, -4,122,84,246,18,71,223,193,93,128,250,237,186,253,75,243,29,75,64,239,169,23,185,179,47,61,33,203,202,214,107,208,135,236,188,46,54,44,4,36,237,229,22,12,238,190,85,55,96,151,3,114,48,70,48,188,59,221,173,150,12,18,32,77,249,228,91,137,219,198,228,232,204,43,18,228,51,71,31,110,70,29,58,83,218,230,230,99,91,123,182,220,150,171,77,91,154,193,245,201,235,67,228,74,104,33,166,230,99,81,51,63,217,102,4,151,115,133,36,238,72,144,28,153,7,27,208,217,135,58,45,203,103,120,103,199,104,26,188,185,69,40,56,151,241,77,148,202,83,0,69,235,146,8,33,65,217,95,144,31,83,194,194,8,25,56,246,27,17,140,1,156,96,54,160,6,10,132,162,229,159,119,12,254,73,78,197,2,134,239,81,54,16,66,211,218,14,196,28,123,43,174,161,248,89,86,38,8,73,12,60,127,87,61,238,129,25,27,239,152,195,223,61,76,53,248,139,58,253,214,44,79,84,48,229,95,210,76,1,90,16,202,249,72,93,69,122,117,169,16,1,109,176,189,152,76, -110,195,227,115,57,30,138,55,117,21,72,193,46,14,180,172,85,98,11,128,189,160,214,253,211,195,10,23,30,112,160,12,205,249,119,109,17,178,6,14,100,149,236,253,52,113,190,214,226,247,86,106,112,34,45,255,178,219,221,219,176,237,126,239,243,111,103,217,116,186,22,113,112,43,181,241,217,152,136,83,167,55,61,237,76,37,135,214,130,7,128,153,80,40,97,43,236,89,123,169,53,105,204,7,92,69,94,244,186,237,175,200,197,5,162,17,170,37,211,236,203,43,97,44,165,93,35,123,76,119,251,197,219,91,227,61,129,61,214,84,15,191,78,19,249,128,191,22,39,139,119,172,241,150,91,25,103,99,31,92,43,58,136,16,94,219,243,177,110,219,80,84,203,208,180,110,89,79,77,80,201,42,100,72,91,69,70,82,133,141,64,68,190,171,58,198,8,67,112,29,21,82,131,100,248,15,68,153,136,231,127,221,6,219,227,245,51,53,44,1,1,254,66,221,144,253,203,229,245,67,240,208,246,136,73,80,103,233,34,14,178,231,1,119,163,92,13,180,152,249,118,250,212,65,236,126, -192,169,172,248,249,169,179,226,137,200,109,102,81,145,180,106,220,208,153,214,70,200,15,88,35,204,244,124,52,34,110,221,5,208,95,68,15,224,23,79,173,107,190,3,50,65,32,252,27,143,86,227,214,45,104,72,69,137,32,231,35,118,215,238,231,129,41,31,145,122,182,251,84,223,116,190,11,137,7,184,157,16,13,14,88,160,252,32,215,62,155,53,216,118,55,24,255,221,218,17,180,187,156,98,241,83,73,122,211,150,127,193,231,166,244,73,53,24,166,163,161,109,33,94,1,65,134,12,8,44,152,192,135,137,121,244,17,37,62,39,220,120,131,51,128,97,42,251,146,154,126,110,102,1,10,244,96,213,132,8,33,85,81,117,144,16,81,29,42,97,1,46,102,104,254,126,244,223,64,18,43,35,207,165,70,112,40,190,201,35,102,111,82,113,195,221,141,70,31,248,176,14,145,233,154,254,181,222,168,137,86,117,229,169,156,209,50,253,37,224,127,103,132,174,52,223,46,128,200,99,180,63,60,143,240,245,118,182,26,62,228,10,62,150,163,163,226,231,182,12,181,58,169,62,189,160, -83,224,123,218,92,94,176,109,127,42,254,86,148,210,154,58,59,237,107,142,52,132,211,111,82,31,13,4,98,253,125,207,129,10,253,231,191,142,141,54,234,213,193,81,99,38,127,53,181,12,161,240,78,179,210,171,164,34,66,71,223,110,223,153,111,107,25,254,124,133,167,182,71,120,49,16,55,60,226,197,176,124,222,207,77,80,254,188,222,201,161,159,50,224,210,219,110,175,127,92,6,128,177,142,234,211,51,52,6,65,195,194,29,39,116,88,65,224,87,137,162,62,237,208,51,193,14,125,186,247,181,254,186,207,73,217,221,103,237,230,44,100,226,160,14,141,90,166,47,65,197,81,94,120,193,80,4,92,137,39,60,58,220,116,133,201,220,149,160,181,255,119,193,90,195,64,207,113,171,192,58,212,70,151,142,162,85,189,162,75,55,207,102,86,15,51,136,133,84,135,111,233,237,243,187,93,206,68,175,213,166,170,43,147,227,154,118,199,28,153,130,14,173,169,80,76,175,132,95,204,246,111,81,169,100,63,174,77,222,165,233,218,5,233,175,85,65,57,46,143,154,108,72,103,76,241, -187,117,67,220,247,110,76,144,249,196,55,246,120,20,195,15,121,174,29,121,138,54,44,194,112,107,115,244,70,0,225,159,110,67,56,99,56,84,152,6,204,112,182,214,37,36,38,3,237,19,5,242,169,134,93,158,221,21,241,37,217,41,76,20,0,9,182,176,57,176,30,89,58,135,90,164,80,252,79,50,201,1,162,242,179,180,60,57,75,217,223,176,228,221,1,223,51,227,113,143,91,230,95,241,6,122,109,98,71,192,227,163,130,35,158,91,155,138,150,17,165,14,20,98,18,152,120,85,7,136,120,77,238,239,74,124,2,114,110,224,189,91,52,179,116,178,248,196,236,23,32,222,6,78,203,103,192,39,232,84,168,169,13,106,243,48,168,177,67,212,60,0,144,132,142,217,33,100,25,113,233,129,204,122,219,139,132,115,175,34,206,156,60,41,188,253,144,14,27,127,246,212,139,153,217,34,210,94,232,207,38,242,133,135,109,206,79,160,106,204,108,182,239,193,172,143,216,190,30,151,245,114,170,28,62,92,164,20,84,162,250,212,181,196,12,20,254,57,162,238,119,21,175,179,214,189, -6,174,178,215,64,180,240,151,57,1,12,105,191,201,138,47,167,247,171,7,46,185,108,199,123,154,127,1,159,206,235,235,246,237,254,10,199,64,123,188,40,70,132,58,203,88,236,195,138,155,244,124,99,97,131,1,235,253,81,251,150,124,222,175,182,194,15,170,49,59,73,160,11,86,124,77,88,220,41,67,255,114,202,45,6,56,191,120,224,8,120,255,46,86,94,146,214,158,247,224,100,210,188,255,252,222,236,247,235,237,250,38,95,242,14,252,180,38,245,10,175,244,237,73,150,65,229,53,17,44,222,199,192,96,211,80,90,167,58,96,174,53,55,24,83,90,68,194,20,129,161,69,74,132,242,67,37,6,144,137,57,251,174,18,166,137,132,62,218,210,96,15,20,206,57,157,85,152,194,225,106,69,179,236,231,230,56,8,132,122,52,205,186,6,121,235,218,137,124,143,73,162,90,201,118,166,47,245,5,9,203,211,172,92,251,211,148,212,101,178,202,178,182,215,202,21,217,124,131,175,158,46,202,40,64,108,190,165,41,174,101,46,247,131,235,208,28,209,186,44,139,39,217,72,232,104, -164,249,242,58,191,49,104,186,118,177,3,219,203,11,1,81,102,142,31,139,209,72,52,155,124,190,186,223,60,252,49,218,220,23,163,55,110,178,155,205,94,171,87,99,245,182,84,222,178,192,225,223,231,110,140,24,165,72,189,222,190,112,205,63,254,21,188,40,110,208,62,90,249,69,208,37,11,30,12,8,96,29,99,232,86,124,130,48,44,40,244,22,15,20,146,72,132,72,130,213,223,9,63,20,202,118,3,218,191,24,160,61,60,68,226,77,98,8,249,103,199,37,230,237,149,56,228,107,94,86,178,157,125,114,63,47,171,121,187,59,200,179,4,28,1,100,204,168,213,68,155,89,203,174,133,234,224,53,175,153,221,157,208,201,53,48,44,141,135,40,40,11,162,128,146,117,154,210,233,191,87,20,9,113,43,206,125,194,123,143,33,16,27,114,13,4,232,48,160,166,149,214,140,92,93,131,103,93,31,6,169,15,12,125,161,236,195,4,38,217,245,203,138,76,55,82,51,27,52,155,170,216,223,188,44,139,94,2,86,179,77,225,120,123,245,119,151,203,161,175,231,209,241,251,154,108, -62,175,195,225,155,105,175,218,161,118,232,59,124,45,154,135,110,208,240,185,255,253,173,101,77,226,220,243,175,190,236,207,41,16,160,227,63,139,19,68,109,60,238,94,187,23,249,195,55,208,55,139,107,250,28,47,90,247,45,159,199,64,221,162,255,158,69,152,172,234,219,86,217,57,247,149,200,235,207,223,96,204,74,28,114,126,246,37,212,47,67,3,59,224,94,66,115,32,73,123,91,245,185,85,231,125,224,11,125,252,220,185,122,184,59,2,217,215,91,239,119,50,110,191,203,235,143,11,113,170,112,201,113,196,51,188,148,110,0,36,167,105,82,80,98,161,181,165,142,112,65,120,216,25,151,193,254,191,124,210,59,106,224,155,17,12,18,203,66,111,254,113,255,185,211,7,145,210,90,86,158,158,80,234,233,94,133,61,33,202,208,185,218,210,3,165,172,138,146,249,181,182,181,182,160,176,217,178,163,76,132,22,44,59,163,11,90,155,0,21,89,84,196,59,219,114,179,201,138,20,59,178,173,117,93,69,61,172,228,110,179,93,152,22,144,97,233,204,51,175,194,19,176,116,64,121, -100,210,32,162,248,246,114,248,183,242,81,118,33,201,110,206,173,214,179,203,119,119,192,115,21,206,139,205,95,26,22,49,178,174,226,160,90,241,162,200,110,172,153,140,254,252,235,250,0,159,88,202,253,105,235,252,36,150,52,229,229,25,88,82,36,4,15,138,183,133,12,213,60,60,87,43,97,94,137,164,29,81,207,2,185,51,70,176,41,3,119,80,128,65,68,2,165,16,19,223,213,20,138,90,166,63,28,210,22,208,236,95,83,224,166,241,151,97,17,69,43,117,151,23,12,92,94,55,189,126,128,219,74,31,191,67,181,189,46,4,197,148,241,120,46,142,131,124,98,96,202,95,153,164,152,169,111,103,135,80,237,84,56,0,108,127,104,248,145,177,212,47,5,119,114,0,177,186,137,34,102,102,69,43,204,51,180,91,212,182,120,192,235,214,84,170,211,142,30,15,156,234,232,59,144,140,82,111,228,148,236,76,89,96,85,97,0,48,81,21,140,189,88,186,187,41,222,15,54,137,176,9,168,178,77,81,5,210,253,71,67,237,19,23,187,213,99,249,255,148,160,221,235,128,210,190, -72,125,61,222,106,166,119,78,40,249,247,57,253,124,133,151,243,251,222,113,168,106,29,154,250,60,35,133,195,129,211,116,160,101,50,223,111,70,77,182,246,74,190,141,123,84,70,59,119,114,144,17,102,41,222,33,212,91,244,53,144,245,57,40,254,12,100,235,218,181,186,218,14,109,187,172,244,219,111,96,58,28,28,247,65,253,254,222,241,121,124,124,232,230,248,119,214,237,166,246,244,21,151,32,198,91,181,95,100,200,174,10,64,32,253,134,16,196,88,116,190,40,194,243,31,115,189,188,251,221,165,233,212,210,86,96,43,100,216,137,141,140,76,37,16,43,251,175,33,100,181,65,9,160,136,51,16,248,71,12,103,22,64,198,194,52,250,35,158,119,225,200,8,114,55,143,165,63,151,207,110,22,57,77,108,13,101,6,28,38,146,154,187,161,187,138,0,180,118,242,79,40,190,56,89,31,176,114,183,166,67,82,175,75,169,215,213,224,19,84,11,243,82,246,219,240,50,87,7,7,119,55,11,141,173,74,248,232,35,240,102,105,238,231,4,66,246,138,117,46,32,39,192,250,107,203, -220,114,201,217,252,154,147,202,162,58,82,240,54,231,6,25,217,25,199,22,161,89,63,215,210,207,72,189,8,78,58,171,65,76,229,59,33,191,171,3,177,9,30,95,69,112,23,58,244,158,221,35,175,225,212,81,72,27,35,175,154,49,209,81,7,10,76,15,88,60,209,234,128,106,118,224,20,186,41,105,58,132,106,240,177,182,13,67,218,107,88,177,113,235,17,153,156,178,130,232,225,151,44,63,216,253,123,245,225,182,56,122,122,234,32,230,44,11,35,90,205,129,120,127,232,170,243,251,207,124,186,114,121,158,47,159,103,224,243,122,92,124,66,156,219,185,112,80,192,12,48,255,16,161,80,40,234,0,236,102,192,6,134,205,41,3,246,42,97,121,142,101,113,85,67,113,70,51,58,130,2,0,42,181,231,190,229,74,169,86,233,92,219,230,60,67,169,105,181,97,21,92,187,213,200,17,176,16,36,78,153,211,128,156,88,224,3,77,224,84,52,178,173,19,33,214,127,33,249,244,126,33,139,105,55,241,189,10,24,212,117,161,116,203,234,20,64,144,254,196,102,88,111,4,47,115, -83,62,240,49,44,102,98,113,134,244,190,143,72,1,76,121,253,113,121,188,187,118,189,9,131,87,243,223,93,226,21,26,254,110,190,159,228,252,62,24,20,190,221,223,205,165,217,252,124,47,151,194,167,219,72,234,11,159,197,79,222,161,195,117,64,8,241,103,223,24,212,253,142,70,167,211,222,119,157,14,215,191,167,224,132,117,99,50,252,46,188,71,249,85,139,159,189,240,111,162,242,190,231,249,54,7,214,111,148,57,111,239,212,179,241,39,207,246,107,36,216,90,78,15,248,159,191,200,223,223,86,13,174,130,130,115,33,225,148,133,15,135,51,56,218,73,2,159,225,164,105,20,79,204,34,73,1,20,32,8,22,158,136,218,245,201,136,126,33,71,142,36,61,108,248,178,127,234,182,71,239,243,209,55,2,0,141,173,219,50,70,99,223,131,250,33,231,33,180,64,184,67,105,126,60,250,26,60,30,107,175,38,77,232,92,235,192,85,99,51,173,35,3,187,71,206,70,59,177,184,228,207,189,85,37,89,21,153,119,22,73,198,111,85,135,163,92,11,108,31,65,223,179,206,65,164, -170,102,169,90,23,211,143,21,115,82,208,250,247,47,35,130,32,65,1,111,25,113,247,175,97,197,186,122,91,141,62,175,181,233,152,170,136,232,188,156,230,82,175,35,117,88,85,211,111,168,167,247,148,113,114,13,60,35,190,223,108,244,139,171,53,166,133,132,161,140,7,165,114,197,85,204,249,107,118,138,39,120,81,235,246,45,29,71,216,1,7,17,24,50,118,45,0,176,183,144,82,228,41,128,4,5,77,157,97,59,128,196,216,177,228,0,208,103,237,105,1,133,80,146,176,5,140,211,2,153,43,236,118,157,92,211,203,37,76,121,124,65,36,2,36,12,132,111,119,110,203,235,115,52,124,14,59,139,203,74,43,74,27,142,34,12,157,5,120,171,232,225,103,196,92,91,2,32,126,218,197,131,32,79,160,50,234,185,100,150,141,202,127,166,158,162,138,146,35,141,158,128,234,192,119,240,94,177,192,205,116,1,47,66,168,219,130,180,17,174,174,142,153,23,229,148,43,10,168,20,93,83,227,41,29,123,64,24,184,160,229,28,194,164,242,239,67,36,141,224,180,40,217,206,207,136, -52,227,52,14,144,232,183,205,239,176,218,15,156,31,123,195,225,156,95,58,84,130,7,247,66,195,238,182,127,10,3,25,29,21,13,103,116,44,102,165,110,82,248,209,169,66,237,191,119,214,156,133,218,171,174,133,193,190,253,205,204,190,253,208,56,177,88,221,190,151,212,43,88,125,36,191,193,207,124,191,191,76,190,213,226,176,24,185,69,4,135,67,243,19,220,243,105,14,162,21,177,43,67,66,83,39,142,8,22,188,60,29,75,153,100,232,128,89,193,231,236,230,167,19,73,95,137,30,64,118,126,161,72,34,237,253,171,21,18,14,149,240,171,6,218,139,63,173,192,105,38,150,188,228,9,196,186,52,60,125,155,193,200,107,145,89,93,95,175,34,122,215,206,33,244,219,195,53,11,39,2,90,201,34,7,14,120,52,140,133,206,10,20,110,49,85,133,175,199,92,33,64,56,172,252,11,7,57,200,242,111,115,107,27,217,22,232,120,225,224,228,182,196,155,124,127,1,32,245,45,218,120,170,91,77,189,217,215,20,163,55,68,210,31,47,20,92,76,141,197,104,190,46,51,150,158, -205,183,81,152,49,157,210,154,191,163,245,128,230,164,130,39,15,192,133,248,42,139,62,32,70,238,173,163,39,184,75,38,37,148,146,74,187,142,90,77,119,160,30,234,160,128,187,89,150,16,191,254,88,33,21,207,209,176,110,255,234,33,30,106,131,109,249,193,249,14,114,208,230,67,193,109,65,123,66,0,35,10,115,2,92,203,21,0,23,72,123,46,233,46,164,50,16,100,99,42,52,75,219,32,224,104,67,161,94,3,142,205,49,96,234,221,104,204,189,116,60,3,13,189,177,157,2,65,229,54,129,194,39,23,184,254,51,214,252,46,168,254,119,56,214,28,202,246,140,215,105,231,12,250,19,156,48,246,108,24,105,132,26,157,2,123,80,237,153,44,132,165,6,115,139,243,25,90,197,44,45,14,122,104,0,5,57,72,25,2,218,39,73,233,106,234,179,248,224,108,138,11,200,136,228,167,219,53,161,113,201,197,211,245,231,245,162,125,19,62,77,89,147,108,42,232,228,3,251,227,107,235,233,98,90,32,77,139,102,172,234,15,226,18,145,252,11,235,18,96,63,214,108,39,52,202, -147,211,2,14,9,170,137,133,128,210,227,81,211,239,243,158,44,230,192,254,248,198,105,47,248,38,230,165,239,240,35,87,195,36,163,104,222,26,126,159,135,199,231,227,224,18,114,80,96,103,159,20,146,185,232,100,161,98,239,195,200,231,90,30,229,16,220,163,19,57,181,12,56,217,81,148,161,56,112,142,20,120,43,125,196,148,40,35,121,24,194,26,147,137,99,236,115,186,117,229,225,85,45,209,136,3,130,149,23,225,19,210,64,240,235,118,172,127,170,227,145,85,195,103,123,254,223,32,209,246,93,251,141,242,242,27,34,12,12,53,244,193,1,64,148,105,87,240,32,201,82,175,137,3,164,218,85,250,98,14,141,189,134,79,169,90,113,39,181,171,33,13,154,216,8,113,134,205,119,44,45,147,164,104,0,250,16,147,120,44,22,255,198,102,241,89,44,86,75,211,108,184,189,234,110,57,34,216,10,5,160,10,244,52,76,130,250,65,213,39,2,101,129,78,181,175,79,227,212,8,248,157,203,20,84,154,132,182,249,180,9,97,45,131,231,98,95,252,152,95,138,251,119,245,47,15, -62,239,72,99,73,101,38,251,64,225,242,15,173,0,78,228,164,162,94,204,81,146,108,139,103,54,150,180,124,80,5,85,251,150,193,72,187,179,66,38,40,250,114,104,82,220,248,197,63,234,115,127,61,14,151,130,199,101,90,73,212,32,20,71,119,48,107,105,80,164,173,100,46,148,132,194,8,173,237,152,24,209,139,53,254,174,197,57,180,5,75,215,124,42,171,124,77,120,173,70,67,87,58,161,255,31,83,245,250,161,150,49,192,69,158,110,12,0,20,228,233,208,4,38,139,205,32,79,35,81,78,12,139,4,246,204,41,179,144,153,131,134,114,93,190,178,193,35,159,87,160,240,75,65,22,237,160,189,206,181,179,136,216,204,14,72,80,80,123,105,234,236,107,30,248,156,71,255,42,54,130,152,158,153,32,6,145,135,2,172,224,89,128,3,64,49,22,7,28,93,50,7,65,198,0,218,235,154,130,199,161,193,163,136,153,166,10,131,5,45,168,170,133,18,81,52,105,39,118,53,128,176,122,185,158,204,96,66,122,152,201,218,9,152,198,187,64,8,73,234,198,7,150,52,88,228, -91,118,74,179,237,92,212,162,221,133,20,81,117,26,28,202,0,158,211,93,216,231,150,34,191,52,107,155,127,60,166,157,209,74,207,245,184,86,104,245,233,126,112,22,48,165,141,127,189,226,23,242,152,2,210,53,132,93,145,70,50,131,94,106,201,112,90,82,161,176,22,123,187,156,113,30,225,75,164,150,76,234,7,31,222,89,243,46,26,58,51,33,255,132,81,249,159,217,222,245,89,135,33,206,243,57,123,228,12,121,12,200,179,8,135,35,13,119,28,216,37,243,128,34,238,211,13,68,64,250,215,214,99,1,14,107,70,155,163,83,3,14,1,250,204,253,21,96,165,64,202,66,215,107,88,31,185,29,49,205,158,67,35,53,79,6,37,237,14,127,75,203,198,254,47,83,55,30,132,222,164,171,20,187,61,219,91,220,240,194,180,25,184,41,220,233,58,253,22,195,78,208,125,158,220,118,222,144,116,113,237,130,131,95,72,196,111,168,14,120,232,203,60,86,158,178,115,127,13,219,154,253,146,35,239,145,44,0,206,1,151,13,196,65,243,46,182,144,19,49,113,0,97,28,114,44, -252,16,197,10,170,70,161,50,176,188,93,164,186,77,228,38,151,229,75,214,27,170,73,174,70,215,210,197,34,98,85,39,245,89,126,160,156,110,183,190,116,187,183,93,200,211,111,184,135,212,123,112,21,239,187,77,47,122,159,253,123,39,255,78,104,198,189,60,92,23,18,71,41,147,136,68,2,7,234,88,180,161,163,74,52,169,20,208,90,81,5,230,171,227,66,126,251,238,75,14,175,211,187,208,80,213,209,195,249,162,210,195,95,219,162,76,111,201,227,60,168,19,201,222,221,95,127,82,26,201,31,78,40,177,156,248,146,38,141,36,167,147,214,115,84,183,221,71,21,4,255,150,43,198,145,192,101,88,240,1,134,8,43,107,85,39,141,154,149,65,132,142,201,94,208,48,126,43,247,21,11,81,53,98,166,209,70,141,249,202,243,7,228,73,59,84,102,11,82,74,25,64,49,14,71,211,239,41,179,18,247,175,173,44,21,68,147,175,169,3,137,73,136,217,24,89,103,106,23,157,94,88,160,213,240,108,146,103,67,233,96,48,102,4,51,169,40,210,151,90,200,46,169,78,63,168, -84,174,29,47,136,90,170,69,177,128,121,90,200,124,93,218,18,23,66,238,84,106,59,53,46,160,121,112,212,144,65,129,163,26,72,42,235,110,100,245,97,89,205,217,180,144,209,117,101,173,155,246,200,192,169,57,87,135,142,214,254,98,185,27,225,170,11,33,128,229,138,145,53,52,221,238,118,50,144,76,193,108,67,240,7,129,243,97,244,122,237,54,246,207,228,234,4,52,208,209,84,188,160,198,96,17,148,146,200,250,123,199,238,86,67,178,50,173,161,60,175,88,178,172,253,117,236,74,34,225,217,179,97,225,117,46,68,72,95,206,59,185,110,159,199,109,109,104,115,116,14,193,160,4,174,169,134,18,46,137,87,67,56,11,78,36,232,62,111,114,5,70,18,22,56,187,229,79,187,247,93,183,169,194,75,227,13,35,222,209,200,219,148,213,239,223,183,192,110,242,238,31,172,222,181,141,154,205,194,139,35,132,239,102,52,123,102,56,235,88,27,228,174,179,67,19,30,10,64,55,216,214,209,139,202,107,43,130,172,232,50,53,135,33,239,146,89,2,73,167,211,173,56,97,58,133, -165,254,233,107,37,7,12,73,218,210,238,108,186,125,1,207,199,219,147,152,147,243,249,46,47,95,74,78,54,176,54,165,82,253,170,206,174,245,199,108,231,252,176,117,76,27,187,95,252,235,220,218,122,197,143,219,116,58,89,190,192,231,124,63,31,75,218,111,175,211,169,213,170,53,162,100,0,32,97,176,210,130,16,247,32,158,110,26,233,33,17,130,53,46,170,37,3,54,248,59,237,170,175,86,179,133,131,202,182,79,76,195,60,168,195,46,70,230,136,43,136,160,64,166,110,146,17,170,138,245,149,173,34,126,204,130,38,135,133,250,231,159,12,90,104,86,167,211,175,86,219,253,138,199,231,10,120,130,68,167,219,25,111,245,134,23,134,113,15,221,43,103,195,60,90,105,84,62,158,203,247,40,178,239,127,192,68,112,146,43,255,96,137,228,47,139,4,227,147,190,231,77,220,51,136,140,254,188,255,246,58,17,206,91,58,128,8,213,55,1,34,117,236,182,152,197,18,55,105,227,13,24,157,196,204,206,5,237,71,84,23,7,200,122,181,248,156,60,244,29,214,239,66,81,63,5, -33,64,140,105,6,198,126,200,69,41,96,46,53,232,14,21,64,232,196,16,16,60,96,50,210,133,167,38,181,136,225,34,101,93,17,181,146,126,140,189,29,35,242,13,134,39,30,150,98,32,129,224,65,35,4,81,122,37,177,230,79,215,217,80,6,144,54,144,140,10,101,92,68,44,104,23,99,14,45,70,212,210,128,135,113,101,99,85,254,145,103,197,105,8,4,142,102,171,231,243,249,6,7,77,61,116,18,94,98,175,121,201,34,193,234,131,79,69,59,222,107,183,89,44,246,133,235,226,89,10,192,178,140,118,57,169,183,31,54,10,159,137,229,211,143,228,31,72,208,144,28,152,82,16,54,197,50,135,96,86,110,211,66,136,172,36,166,90,172,94,116,219,220,15,15,204,94,113,233,172,130,94,170,79,134,99,80,85,28,196,6,197,85,185,12,95,116,255,32,32,13,188,135,255,255,254,99,178,52,31,79,244,25,166,208,208,162,102,79,110,129,181,15,233,109,134,212,50,94,115,67,204,156,224,74,170,129,187,102,120,172,35,220,80,164,120,1,94,33,197,210,68,87,38,136,14, -238,148,252,51,88,191,207,161,60,182,13,77,114,15,73,146,91,255,233,244,4,48,54,157,155,192,227,46,185,108,253,87,171,53,108,248,124,8,127,178,5,201,245,233,247,217,179,155,145,244,219,158,176,143,73,133,173,175,165,133,100,168,25,208,149,237,72,51,76,201,119,87,7,34,236,67,180,180,4,76,19,59,129,132,36,140,51,39,81,231,32,202,203,3,215,33,159,148,112,136,222,140,231,28,12,215,42,97,251,219,255,197,170,9,29,67,127,96,208,174,161,39,240,135,215,28,72,207,109,51,132,36,9,67,144,109,126,183,18,15,117,70,219,199,229,35,47,187,29,122,253,191,175,34,161,125,5,86,150,19,207,170,135,254,17,112,85,19,79,165,159,215,134,107,60,22,215,105,85,253,107,47,156,70,230,198,52,226,253,222,205,68,214,118,34,164,114,126,117,248,236,68,62,137,79,76,19,197,148,33,159,210,119,211,41,99,34,159,202,239,138,137,66,49,145,43,146,211,233,63,186,251,1,72,125,35,232,88,100,190,181,16,98,47,137,164,83,213,255,146,176,119,174,158,210,251, -77,163,84,3,246,14,92,140,10,197,42,207,112,227,208,9,33,242,146,196,253,106,193,45,218,129,107,112,146,182,54,164,72,63,15,82,74,206,157,9,170,116,97,111,174,38,236,31,80,168,47,59,237,234,122,120,141,141,107,82,130,253,116,56,6,208,119,192,79,159,135,76,41,36,39,97,19,125,99,177,101,65,176,170,146,136,98,121,229,44,121,131,179,180,52,203,57,40,73,253,217,64,60,29,78,254,204,182,138,221,200,224,48,238,188,208,179,116,129,108,101,77,61,44,135,97,127,115,2,233,90,39,33,131,180,80,213,176,95,5,68,159,4,69,38,134,98,102,31,228,27,223,96,215,49,218,82,221,123,82,23,212,54,11,32,82,238,181,41,255,47,130,235,3,254,239,192,119,227,242,253,229,57,229,188,37,64,208,37,228,179,86,155,250,179,170,1,222,102,89,19,10,49,197,97,106,16,139,180,152,110,241,97,12,44,228,49,59,233,98,32,194,238,103,154,194,64,180,174,89,217,240,56,64,201,14,18,175,5,4,150,29,206,163,197,160,20,14,32,30,242,26,114,7,33,126, -37,53,253,159,68,44,161,41,221,173,202,72,74,105,89,167,202,226,99,62,255,155,189,38,139,81,132,193,15,192,120,38,137,110,117,137,167,87,62,229,28,59,194,243,145,3,236,16,207,188,17,122,99,84,11,130,202,201,165,3,156,28,178,31,131,165,172,204,223,15,4,114,127,3,68,39,232,67,250,6,219,245,93,126,28,249,214,67,195,226,191,92,184,94,246,149,194,103,227,185,151,29,26,144,23,214,216,116,251,152,99,241,253,82,92,62,218,188,211,167,111,109,121,29,195,154,255,219,215,234,65,129,200,219,198,19,86,24,151,225,111,209,46,163,163,76,60,184,101,10,134,169,246,148,5,86,94,178,19,141,60,125,198,72,85,227,152,105,165,191,202,88,230,250,12,160,245,77,188,134,232,220,168,90,210,140,187,24,155,145,141,244,56,28,30,181,221,144,78,103,53,74,184,176,124,157,159,59,190,27,131,155,98,224,13,232,214,83,193,96,173,132,49,125,62,205,143,4,28,228,235,101,14,147,189,45,191,27,69,153,187,73,253,133,164,193,246,154,107,66,197,95,205,66,29,73, -194,145,64,192,252,124,164,248,254,189,41,92,190,96,126,33,235,13,138,191,29,241,98,255,219,137,74,23,251,250,88,16,16,239,148,130,186,217,193,132,136,235,249,92,43,236,126,40,2,68,64,170,217,99,89,203,144,199,42,55,199,65,26,240,93,193,47,112,193,208,56,18,115,40,189,103,145,157,33,120,229,110,168,193,173,211,239,210,163,128,41,48,115,244,124,79,167,15,114,29,174,228,150,67,215,131,184,254,161,95,76,44,45,190,92,148,98,217,51,42,183,154,253,185,253,166,189,198,110,188,93,54,6,195,92,213,230,235,133,181,20,117,105,195,68,255,162,43,113,32,34,241,16,137,1,136,145,24,251,49,203,97,51,163,24,251,114,113,244,16,105,224,20,147,75,248,54,102,194,139,38,77,65,34,123,254,161,188,97,163,75,171,180,170,253,43,167,44,63,164,16,165,172,163,94,85,32,225,152,200,102,106,221,16,113,148,83,188,54,207,226,29,181,237,196,145,251,113,32,1,225,215,78,11,25,177,139,23,111,4,52,49,224,33,147,68,244,187,118,44,183,45,4,44,86,189, -3,244,124,110,167,158,154,222,239,128,248,45,241,61,245,156,163,177,63,136,90,253,147,229,71,169,99,189,103,58,74,131,110,131,253,27,194,189,120,196,60,191,180,82,209,125,57,198,253,69,209,69,129,217,248,29,11,201,110,173,97,83,99,26,114,100,221,54,93,60,126,168,52,143,58,34,23,105,106,53,206,109,240,181,121,189,158,131,203,112,231,179,188,90,154,234,242,60,9,155,41,48,67,224,44,186,179,183,199,87,55,121,154,80,228,175,247,174,218,243,255,119,185,119,238,93,190,133,44,37,167,225,229,184,156,194,183,48,244,250,72,7,147,233,226,181,118,60,220,86,122,2,203,121,55,81,109,126,96,253,105,134,104,150,91,72,126,77,232,198,40,142,151,164,49,208,22,200,136,103,112,19,138,216,72,145,37,66,81,13,132,17,180,80,76,73,78,38,63,13,45,16,77,0,249,205,112,117,59,128,221,142,173,153,98,6,40,77,119,43,206,120,214,254,40,97,206,83,233,224,85,196,4,131,230,217,55,248,36,190,186,195,211,235,184,217,141,166,143,201,238,49,71,25,25,5, -148,174,34,194,217,171,155,204,231,214,204,169,44,52,54,98,6,239,178,83,63,133,77,27,41,245,173,179,46,128,60,169,24,225,111,84,5,242,219,67,29,149,201,237,225,27,177,112,28,91,86,27,190,218,76,212,118,187,21,236,24,75,133,189,114,238,248,75,73,214,95,59,95,63,168,89,191,17,49,100,158,43,71,250,129,186,158,35,68,63,120,177,10,80,100,68,51,11,161,10,11,242,93,91,98,124,168,134,230,41,126,87,249,211,227,188,247,22,82,116,179,250,45,175,226,122,127,200,199,206,32,32,236,110,59,59,66,125,116,153,220,24,187,243,199,196,161,188,34,186,60,44,18,239,70,240,196,23,56,196,38,18,105,122,167,121,157,3,64,103,6,40,29,148,186,204,167,217,95,217,131,73,43,6,152,221,175,239,198,15,191,206,87,138,199,114,127,153,47,187,150,211,247,245,153,190,46,153,243,234,57,239,126,222,224,155,237,121,250,236,62,195,55,217,208,161,110,143,182,107,128,241,114,12,138,65,137,155,85,88,154,134,181,11,174,11,30,46,177,56,199,210,82,0,241,76, -17,239,122,43,200,253,102,235,17,49,201,29,29,139,86,59,118,137,244,160,37,71,74,91,159,237,22,153,11,148,135,123,110,12,11,230,33,228,20,203,198,50,229,248,106,202,196,170,1,68,162,5,12,149,149,88,137,10,86,232,34,10,129,77,184,41,163,157,231,192,96,220,137,69,237,186,249,159,149,21,233,134,22,49,11,72,34,181,121,169,69,6,230,124,240,245,55,129,84,0,249,60,31,76,42,24,9,182,58,233,73,77,39,147,235,172,55,60,142,149,91,211,165,47,9,96,53,58,107,55,245,69,139,115,192,252,207,145,105,178,160,87,246,190,94,31,199,221,89,100,123,97,238,218,40,97,65,35,27,206,13,101,97,205,0,47,6,177,127,26,153,52,22,90,74,249,54,72,6,151,6,75,253,153,118,218,121,30,5,149,67,209,160,193,198,112,103,122,108,119,163,109,243,155,130,54,77,191,209,208,158,112,0,188,221,190,112,233,109,241,237,246,29,188,134,255,166,43,217,13,7,152,3,115,9,32,77,63,152,211,114,240,58,110,86,160,225,229,119,125,92,38,175,149,194,254, -186,71,144,189,212,28,112,1,168,21,71,198,243,81,210,219,11,22,177,246,17,205,196,75,28,33,238,238,44,68,28,2,54,50,205,196,252,116,8,156,3,41,105,105,121,105,216,175,168,105,41,133,174,196,18,102,250,250,47,176,186,237,110,74,187,81,111,36,254,94,8,132,95,239,175,86,103,216,240,214,24,94,103,35,177,168,111,40,238,249,227,222,159,80,118,135,209,120,54,26,223,16,135,229,232,177,218,253,102,34,106,18,150,163,28,36,167,159,194,196,181,214,37,104,117,141,144,243,116,252,74,34,112,228,238,71,159,180,100,239,229,225,194,166,23,15,193,182,40,104,246,205,180,118,17,239,165,119,121,233,153,133,55,68,130,217,229,247,247,115,31,136,207,79,135,221,50,56,140,111,59,111,80,193,88,156,254,196,152,234,70,97,1,15,48,166,133,41,50,59,86,136,105,63,164,88,168,42,222,240,164,224,83,39,137,146,69,52,161,58,238,150,206,117,170,151,207,139,214,167,212,135,113,30,120,138,81,143,189,144,0,72,176,59,178,158,48,56,25,41,120,169,155,28,206,146, -63,227,236,74,241,255,72,56,135,102,105,186,110,139,254,245,178,171,78,217,182,109,219,182,109,219,184,207,251,221,70,118,179,145,177,230,220,99,68,238,88,33,244,151,180,1,204,243,46,64,186,95,98,254,148,252,108,223,113,56,207,81,160,242,91,205,241,255,173,217,180,78,21,167,157,218,178,210,123,237,54,163,218,166,212,88,109,70,171,82,107,213,17,173,106,173,89,173,182,219,245,239,150,59,201,106,221,73,127,56,17,240,14,145,60,16,17,100,241,185,30,47,8,161,83,130,9,197,27,232,200,130,225,34,191,101,168,186,29,132,199,244,178,152,109,100,40,72,24,32,158,31,48,31,147,2,157,121,180,116,41,78,130,226,147,182,57,51,244,68,56,182,129,192,24,153,9,44,134,127,78,39,112,1,156,117,158,129,97,53,248,210,0,228,151,139,125,255,70,71,15,111,193,75,59,189,11,147,220,146,172,139,218,128,252,82,48,254,86,100,23,210,65,34,177,202,103,163,190,166,18,123,50,67,238,254,243,129,65,101,144,106,50,164,61,229,131,78,171,219,245,56,218,251,183,203, -3,186,170,208,237,118,93,242,181,192,64,203,167,69,235,125,188,74,34,215,186,210,12,224,87,91,53,91,12,30,11,122,105,0,168,112,207,201,106,114,180,68,196,179,92,240,16,93,129,180,92,44,138,44,208,68,199,169,168,240,143,167,193,145,167,64,48,47,20,6,124,26,23,177,238,40,102,205,136,219,24,98,251,67,208,255,189,25,252,8,250,161,69,46,2,122,173,46,175,121,238,86,111,55,222,242,191,213,10,189,127,245,27,136,120,248,63,65,164,35,128,118,2,127,143,77,187,61,157,30,245,14,175,155,147,197,65,8,67,70,79,60,69,65,222,27,46,175,178,49,217,251,159,169,31,94,243,15,33,56,231,103,240,179,51,121,216,24,152,64,215,177,211,80,94,168,112,55,83,249,105,127,20,96,22,147,18,255,89,38,164,43,206,150,252,20,0,60,251,153,130,25,107,191,178,195,219,108,121,105,108,26,147,43,105,178,59,174,134,211,177,174,217,84,107,46,201,250,202,34,149,144,74,226,241,153,36,29,211,196,115,42,236,159,207,175,192,55,248,75,65,19,13,242,197,77, -228,177,211,174,54,213,45,27,223,236,28,171,39,137,154,150,82,69,238,251,129,155,222,251,115,196,157,23,119,243,233,186,241,227,53,149,115,50,131,39,182,181,19,243,146,208,106,173,250,152,213,110,67,164,58,99,93,151,84,22,57,63,161,19,83,17,24,20,50,33,145,237,7,75,159,2,53,37,162,200,13,203,186,12,201,62,176,39,224,90,176,236,179,143,171,147,255,207,175,79,130,158,5,127,79,74,139,72,8,237,169,137,26,15,146,141,3,61,132,218,161,199,66,118,2,255,196,239,7,72,139,51,222,157,181,61,10,128,254,233,70,113,96,38,86,253,196,232,241,8,160,164,116,27,49,129,148,152,133,170,105,199,171,167,199,214,19,118,94,205,54,9,136,243,179,25,149,191,166,153,210,21,222,218,22,22,197,11,239,242,30,101,83,45,89,228,39,225,156,20,148,79,224,199,192,126,15,208,118,253,151,206,215,199,243,249,220,115,135,212,137,255,8,26,53,165,85,171,182,219,31,236,47,119,212,39,47,45,86,170,103,161,151,231,131,5,232,220,194,157,95,14,94,105,83,171, -224,144,90,240,31,115,6,73,14,148,223,42,179,54,121,70,175,179,110,253,126,183,143,109,173,98,254,227,55,39,61,203,34,104,53,150,130,139,251,232,188,45,5,215,80,154,23,135,156,203,182,50,24,177,62,142,117,130,113,185,28,141,255,234,27,231,156,116,84,19,145,27,88,211,178,255,107,147,71,214,182,1,209,29,211,173,13,3,229,211,112,209,9,22,1,209,101,40,19,252,209,199,149,3,92,59,173,193,41,234,39,143,49,237,227,133,77,71,83,74,189,157,83,42,137,80,148,28,86,147,42,97,183,85,215,122,94,94,55,160,13,103,177,188,193,197,246,235,125,124,17,168,124,108,106,205,83,26,111,91,149,21,57,110,114,67,165,221,137,114,35,68,6,190,110,14,205,155,226,244,115,210,145,84,22,171,138,48,29,37,57,173,0,245,6,198,8,135,161,39,136,160,89,56,0,54,144,29,145,54,178,166,183,244,153,214,53,234,150,165,118,142,247,55,185,249,190,119,222,47,226,92,214,88,222,229,7,233,222,33,188,126,31,217,243,63,117,67,63,191,42,46,43,135,33,225, -36,176,24,33,74,12,131,67,132,179,21,143,189,191,66,130,191,222,236,106,127,180,189,127,165,213,229,126,255,92,255,122,203,131,170,245,175,230,116,99,44,20,22,42,204,133,132,191,112,100,244,205,155,241,184,8,84,120,216,155,25,104,104,232,153,185,19,65,66,27,5,6,79,251,193,113,158,84,224,151,41,210,62,113,94,216,225,101,174,177,111,201,177,206,135,247,229,223,176,254,158,158,155,131,223,251,250,24,110,35,71,223,119,146,12,84,146,1,12,119,126,233,47,159,87,253,148,191,229,161,9,169,47,88,42,138,236,207,0,169,173,111,148,14,9,121,160,63,197,178,120,155,142,50,217,168,209,100,216,108,127,87,143,172,237,193,16,186,235,223,144,255,123,151,97,118,238,223,65,65,76,145,139,30,184,71,188,108,236,18,27,42,76,80,12,200,69,41,10,97,197,68,34,188,119,234,139,48,183,154,64,147,30,73,73,0,87,138,37,26,205,9,131,117,94,193,56,204,164,44,56,35,239,152,230,149,25,102,30,33,146,165,136,132,12,70,149,200,29,255,72,158,93,20,171,155, -246,210,16,127,238,107,109,217,188,47,176,1,131,232,251,124,58,107,187,16,108,7,56,233,18,116,50,14,90,190,3,18,209,110,48,242,119,218,199,7,236,0,214,223,53,180,7,211,38,29,19,175,197,41,13,175,137,65,104,117,135,205,73,139,143,85,239,51,222,12,250,15,209,105,250,154,45,79,61,203,224,182,57,245,38,125,202,194,101,66,21,251,2,248,139,44,111,215,253,61,224,60,190,223,207,227,49,224,124,94,175,215,239,171,127,251,157,92,70,175,219,95,127,190,94,170,127,47,107,67,237,69,35,110,140,125,225,85,42,157,164,222,193,148,19,229,167,201,1,250,31,200,73,222,234,80,193,27,160,32,18,137,250,68,160,169,72,135,46,12,80,77,80,71,30,45,21,172,186,103,1,46,6,88,137,55,206,185,188,133,63,48,237,95,8,133,57,138,242,103,30,159,147,134,113,174,148,82,243,160,33,229,219,118,164,37,35,215,47,136,19,72,52,189,16,75,111,162,52,72,181,38,55,159,147,226,83,13,227,147,152,241,167,198,33,63,9,27,35,94,226,249,20,109,121,246, -222,192,80,144,166,131,127,214,237,65,215,71,149,17,244,171,85,100,28,248,111,105,236,223,122,167,238,77,78,181,72,235,232,104,22,125,179,235,111,39,252,0,9,117,30,90,210,140,82,214,178,179,193,230,162,144,19,23,151,6,71,68,218,221,77,108,86,1,30,255,64,123,52,5,146,20,223,163,116,236,145,85,0,111,131,148,47,202,78,32,161,204,25,195,188,156,6,192,177,41,228,210,52,19,250,152,153,238,58,71,221,100,255,84,149,230,197,251,44,120,118,66,236,103,65,222,100,242,189,32,164,20,53,159,3,151,144,79,123,219,249,220,94,93,110,198,70,194,218,2,190,139,125,62,194,193,91,95,111,82,187,56,223,95,155,175,127,56,64,221,92,95,109,115,58,57,222,94,89,109,71,218,131,110,161,111,94,140,167,227,98,67,66,216,56,229,34,35,0,14,0,36,36,244,51,98,225,161,236,53,19,80,225,18,128,16,96,172,175,125,0,10,160,21,50,146,225,18,35,124,117,146,226,227,209,226,219,246,187,87,104,32,205,129,24,79,245,68,102,250,111,147,195,228,180,57, -237,58,146,219,241,2,78,118,23,164,222,245,52,91,94,206,153,197,97,162,233,146,162,189,220,132,173,62,58,11,152,132,138,190,57,152,253,171,40,232,99,40,89,27,14,99,152,63,163,203,128,117,27,31,95,107,42,125,32,111,201,160,103,47,135,217,235,122,120,61,55,16,102,85,82,164,32,235,58,251,143,69,90,242,160,140,80,81,142,151,140,176,100,64,1,252,5,69,180,85,157,124,108,107,204,204,50,223,91,36,65,184,144,66,144,24,20,19,218,204,144,124,140,252,167,41,146,69,180,201,181,200,79,213,138,24,160,151,207,23,89,53,37,215,24,55,76,108,191,94,188,169,254,217,207,9,144,110,122,28,100,255,112,163,124,127,0,137,15,36,23,128,247,40,61,2,230,214,126,184,6,8,204,244,8,116,226,224,167,70,170,254,123,244,205,194,199,30,224,101,247,129,196,15,176,226,254,231,54,92,188,214,214,193,9,66,184,243,124,3,207,19,128,150,201,170,60,146,8,125,16,60,0,15,104,254,218,228,49,247,8,113,180,83,24,236,48,191,206,237,223,212,231,251,159,60, -95,36,64,30,144,191,135,227,81,169,88,58,95,143,31,145,58,173,138,160,204,5,152,64,32,172,194,216,191,62,127,61,203,114,18,215,227,1,35,118,73,189,240,252,187,151,180,228,14,117,155,213,162,82,69,149,42,20,2,7,120,133,86,144,33,23,193,74,232,228,5,69,8,72,172,37,37,144,39,176,148,96,63,64,139,137,122,150,14,222,125,126,101,100,101,162,151,177,55,15,227,68,248,199,75,159,105,83,28,138,76,166,47,177,17,148,179,225,226,32,54,201,38,39,124,235,234,115,29,197,51,213,232,103,58,142,123,241,167,61,238,47,60,141,21,191,172,83,8,77,114,32,71,129,179,95,201,60,58,211,27,105,145,95,72,60,245,207,243,63,26,167,56,232,251,138,115,204,229,240,98,205,86,227,159,86,74,26,71,143,122,60,32,236,17,48,236,27,248,71,162,129,237,42,111,155,166,156,137,105,182,150,43,54,26,181,74,133,61,6,118,225,39,151,158,164,160,20,7,50,94,125,8,151,144,12,10,151,98,49,26,209,151,160,19,154,168,3,92,186,99,144,145,186,56,222, -164,96,192,184,8,164,103,227,181,66,85,211,57,48,158,175,215,159,247,116,60,219,74,180,109,69,89,85,121,186,46,223,77,100,30,234,241,170,159,95,170,251,178,81,109,56,201,139,201,91,19,175,211,107,77,18,38,190,1,131,185,7,122,235,58,10,173,199,206,67,86,56,21,30,69,169,98,186,109,135,87,211,198,193,47,126,203,29,46,178,217,65,144,218,175,152,128,235,247,63,211,73,73,228,212,135,207,192,39,111,238,157,187,117,82,189,22,175,7,1,198,105,145,46,213,190,175,106,196,10,183,0,169,20,98,226,194,58,26,80,32,86,33,132,217,128,12,192,249,241,140,0,113,28,41,152,205,149,154,187,199,200,200,94,28,220,174,46,93,58,233,198,109,210,41,97,62,172,75,167,113,171,148,218,87,129,136,223,69,23,102,248,138,183,255,230,238,169,247,159,200,113,82,170,17,56,254,83,48,130,180,32,126,253,171,52,251,179,172,233,187,235,212,245,169,236,60,129,229,118,239,173,190,86,142,142,202,50,172,173,175,176,77,135,98,218,73,246,69,215,48,110,86,92,44,20, -39,125,255,96,172,58,205,58,99,187,229,188,212,219,174,122,203,214,36,183,60,144,148,37,3,187,42,162,190,91,211,28,24,84,205,114,211,129,43,90,103,74,7,27,41,211,139,200,225,60,40,164,16,203,97,113,137,1,131,163,118,7,55,170,24,159,75,2,30,101,149,20,88,180,142,4,83,60,157,122,68,80,168,169,186,164,172,22,236,155,222,109,13,175,7,170,255,230,202,150,16,12,195,59,8,39,143,67,190,151,63,168,8,144,234,224,190,65,192,47,227,239,199,99,242,189,151,240,47,138,255,248,110,97,155,106,234,59,58,135,63,9,34,178,246,133,34,33,184,136,85,123,184,102,186,234,85,55,253,186,102,37,77,105,208,212,19,250,0,199,57,230,10,54,237,168,115,158,4,22,162,118,20,134,172,103,77,156,52,164,53,122,99,170,100,27,32,84,86,248,30,111,101,107,200,222,131,129,239,156,158,236,204,201,188,105,117,233,191,235,53,139,210,105,183,187,222,135,10,131,140,89,20,115,143,51,58,60,89,1,245,63,75,96,222,39,191,25,194,118,224,125,95,239,215,98, -155,57,96,17,194,21,139,229,232,239,42,195,214,165,152,146,178,69,71,133,153,147,195,72,72,41,252,218,113,44,100,149,160,206,65,77,252,198,76,101,198,194,98,57,229,14,130,74,178,80,92,19,136,42,114,81,38,57,83,37,86,133,36,128,72,94,138,146,19,172,71,50,82,162,125,195,167,151,225,158,177,151,196,94,239,180,56,236,77,183,207,209,241,218,187,157,70,155,35,195,192,168,3,253,166,218,20,176,2,84,222,132,24,56,44,153,163,212,88,254,57,177,78,135,74,36,82,122,253,249,126,119,72,206,83,255,61,47,189,223,232,31,174,57,175,39,86,247,251,121,95,190,135,205,164,87,65,119,58,162,108,30,0,151,61,24,198,8,63,137,128,74,139,117,80,29,6,12,195,231,79,38,74,10,34,70,149,12,53,110,30,10,19,33,8,7,251,108,94,238,149,37,132,140,91,37,159,113,20,23,231,99,180,181,58,177,84,103,112,219,245,190,247,223,246,12,222,135,115,191,251,111,35,132,245,93,187,7,119,183,163,249,172,62,223,65,227,230,163,64,66,180,177,132,7,169, -155,206,181,124,67,84,35,153,66,5,106,45,78,10,133,113,166,214,14,208,32,136,105,224,140,171,64,9,85,0,254,57,105,171,202,74,11,223,58,117,119,66,215,0,142,192,73,167,174,235,194,105,28,236,84,53,248,118,64,196,15,25,208,207,174,128,110,206,58,59,129,180,59,117,179,98,225,116,14,239,150,12,2,101,176,0,209,248,226,18,181,58,149,13,235,247,245,47,49,156,109,188,183,186,130,252,219,231,16,150,148,121,12,253,89,232,145,170,46,172,76,98,51,11,5,235,234,193,9,159,67,173,181,175,201,177,62,218,104,108,179,55,215,168,146,217,219,169,215,26,199,147,77,95,162,160,202,168,41,230,44,200,226,104,182,194,71,99,65,20,9,145,164,136,163,201,56,13,4,1,28,3,187,186,134,250,88,16,229,189,188,114,18,8,129,29,195,192,81,241,126,16,112,106,104,57,25,142,67,42,36,30,26,220,120,197,31,13,26,250,62,181,74,8,104,12,253,162,235,229,52,203,104,147,72,161,70,64,129,112,114,120,224,21,35,37,4,63,205,24,217,186,208,195,15,77, -155,245,13,214,173,173,47,116,218,235,56,4,9,66,19,155,87,222,104,251,216,203,13,27,192,42,218,203,167,39,39,67,217,198,231,19,70,251,171,139,83,70,65,114,221,55,243,221,81,96,188,56,235,174,121,90,123,123,23,168,166,186,190,225,90,69,33,221,6,137,224,102,140,48,203,34,221,164,8,52,213,134,156,133,50,248,20,36,205,57,170,69,149,59,165,155,11,40,8,224,218,239,121,124,103,172,167,223,94,42,82,225,119,141,54,7,131,66,195,55,201,100,70,174,217,110,236,245,190,15,216,239,46,77,109,126,129,182,95,191,194,162,60,123,50,177,215,140,215,160,30,151,47,13,55,135,179,102,112,217,76,70,106,148,79,26,224,134,108,77,50,150,64,229,44,113,8,162,18,4,36,158,46,146,159,21,204,28,218,120,14,25,42,61,3,153,94,152,219,150,208,51,185,204,59,42,174,92,98,255,209,193,45,84,156,195,35,27,148,151,157,209,87,95,134,26,225,12,28,187,234,175,180,141,54,231,179,147,244,170,119,93,159,230,211,253,243,120,255,222,203,205,111,5,103,169, -208,96,15,184,243,88,47,91,212,84,196,134,118,96,136,47,234,82,70,152,114,243,203,6,79,32,218,106,115,187,29,102,235,125,159,85,244,66,116,144,208,245,6,80,128,113,167,2,190,7,43,161,42,143,176,237,126,222,207,223,119,57,62,47,55,27,86,203,240,113,70,242,118,29,1,19,67,134,49,193,250,112,97,166,6,248,13,200,24,195,4,205,65,40,179,176,145,147,176,30,98,105,41,44,65,109,203,72,160,46,131,129,46,35,25,245,174,213,24,125,87,195,87,198,235,160,119,123,236,151,219,238,241,185,92,222,251,231,123,123,13,35,29,221,39,116,130,199,236,85,222,185,178,138,213,254,53,136,247,113,91,110,94,114,86,217,95,178,0,125,0,55,183,189,95,110,98,58,93,12,176,123,124,31,43,215,235,196,202,160,220,252,53,16,8,48,243,209,68,138,66,225,135,17,17,214,57,31,87,32,138,83,101,97,168,119,96,167,42,23,127,183,10,141,80,42,250,114,45,29,99,226,158,39,18,229,48,182,26,217,49,69,245,124,167,36,108,226,80,135,122,150,35,26,183,96, -185,100,90,223,63,9,59,84,228,215,219,135,16,25,45,7,100,15,66,42,84,126,47,104,253,165,117,185,114,27,55,60,91,108,195,217,243,163,162,215,57,39,65,139,3,210,157,157,164,170,91,7,242,147,36,49,111,33,62,98,211,247,88,232,82,94,153,93,71,59,85,74,147,129,137,30,27,169,173,107,125,169,156,102,95,113,173,85,57,177,128,192,46,9,211,196,219,53,87,178,114,220,28,157,5,162,228,68,38,8,144,84,51,80,182,167,115,228,120,76,119,43,36,220,97,10,52,56,128,136,4,23,204,49,153,24,16,147,50,24,99,148,148,10,74,165,63,41,109,124,38,18,144,49,198,3,210,77,199,29,11,123,51,12,190,58,115,198,169,108,248,237,41,214,116,59,165,147,78,5,3,101,66,138,89,46,74,244,69,93,202,79,237,189,136,187,103,7,84,218,85,35,200,159,143,26,22,65,216,93,94,207,219,240,61,219,28,148,182,164,89,247,178,215,91,54,214,146,141,50,59,82,97,122,216,143,228,31,219,51,207,216,189,72,231,206,205,190,184,213,210,156,108,251,36,51, -186,168,133,13,97,134,105,32,162,85,186,213,236,213,135,24,153,27,202,124,17,35,236,34,126,81,110,154,98,77,209,69,130,122,145,35,238,156,25,94,99,191,121,228,18,68,65,103,98,93,108,254,234,212,229,114,193,99,58,153,172,118,171,221,118,63,174,239,123,191,15,106,150,31,31,241,27,32,124,183,230,160,245,47,41,106,87,233,119,124,79,75,187,243,63,129,4,135,225,42,211,236,207,31,103,185,94,147,79,160,103,181,112,181,48,91,146,17,53,84,116,96,124,69,221,77,71,76,163,108,188,168,72,21,176,28,165,20,45,149,162,212,224,146,186,138,94,216,109,127,157,184,140,46,148,84,22,165,168,105,101,120,120,159,69,214,51,216,244,119,219,13,214,102,167,230,110,175,59,14,155,205,230,240,200,221,46,167,215,107,123,223,191,239,235,126,223,63,71,153,213,31,207,215,238,24,58,28,46,55,59,59,93,90,70,31,66,72,15,110,230,197,164,56,85,202,15,221,245,230,239,123,123,99,192,238,201,87,166,70,3,31,47,244,187,69,237,187,11,140,126,234,176,186,133,125, -157,142,155,205,230,198,51,178,21,108,107,91,177,53,70,164,200,80,55,166,185,162,97,106,12,210,251,33,95,17,170,1,218,198,193,48,136,111,36,113,169,241,144,44,25,161,72,146,233,216,226,138,20,18,148,44,194,169,31,100,95,214,173,217,217,242,81,157,109,142,243,205,122,62,186,203,231,43,94,247,105,253,1,238,207,243,251,122,188,2,30,135,255,110,46,125,115,188,215,43,78,211,237,166,189,224,17,244,167,235,34,0,43,183,247,75,3,194,112,93,80,140,58,129,127,1,253,254,183,194,130,127,107,253,128,173,119,250,236,142,181,235,204,70,133,139,77,88,144,28,45,228,59,83,123,34,73,242,175,31,84,241,77,97,153,60,54,75,181,69,108,186,129,247,109,154,172,137,222,25,230,7,97,189,35,68,125,63,253,188,180,171,212,240,19,15,64,175,185,162,23,252,73,37,76,235,208,31,43,202,97,104,182,160,197,53,76,238,126,212,158,89,202,3,142,97,186,255,16,208,163,93,0,217,188,30,64,215,14,47,46,233,121,109,245,91,131,57,164,99,123,154,246,79,145,190, -182,98,94,61,131,220,242,182,113,218,206,19,164,64,165,240,104,43,249,59,74,87,174,84,67,211,185,118,167,1,94,94,34,189,243,210,80,117,100,20,151,134,117,17,7,52,166,96,8,63,255,3,142,154,148,170,163,68,73,226,35,24,70,174,68,105,144,25,82,1,95,206,182,51,128,254,4,162,46,161,250,178,99,131,40,72,133,102,48,77,127,107,236,114,51,223,85,63,15,217,88,76,20,38,245,152,74,187,172,141,88,99,136,66,34,157,144,2,248,156,82,116,139,77,39,201,189,143,169,216,62,198,209,56,115,22,173,24,142,86,186,217,221,243,106,100,140,88,186,243,205,208,119,222,122,207,10,243,104,225,32,46,79,196,223,120,56,109,15,84,117,165,111,90,56,43,70,232,80,234,171,20,119,189,172,127,46,42,120,49,48,66,173,115,208,87,120,14,255,88,155,11,213,160,165,70,54,137,61,188,135,201,218,81,26,182,240,83,34,199,21,199,29,80,28,183,49,99,203,122,126,11,196,74,109,86,236,10,81,211,238,94,252,61,24,52,119,36,114,33,192,57,236,235,224,179, -210,207,65,114,252,179,123,173,86,139,201,214,127,189,129,236,195,103,111,187,14,62,186,223,14,10,62,148,102,150,119,170,172,203,78,46,177,159,223,185,210,234,188,236,78,103,51,230,114,51,213,26,56,63,41,89,144,155,26,139,82,197,220,83,64,25,85,67,23,66,179,154,0,30,149,130,149,222,168,121,25,85,6,165,82,160,156,153,53,185,28,29,8,40,1,181,65,69,165,228,103,84,122,57,113,188,102,211,124,99,33,188,140,255,10,218,235,112,253,14,183,253,145,112,97,215,124,223,223,33,115,128,231,118,190,239,121,123,40,233,120,223,239,101,244,213,249,62,231,191,223,247,55,28,84,10,137,69,210,148,76,210,2,124,195,76,51,193,100,107,71,110,61,222,99,221,99,175,214,109,168,219,210,44,131,47,212,204,255,62,58,5,250,142,113,247,245,188,143,243,247,241,120,191,102,242,30,143,41,55,118,117,213,131,250,129,84,63,91,17,42,81,96,152,17,124,67,3,207,174,56,51,230,58,122,144,194,231,31,239,38,191,126,60,41,42,11,81,210,177,52,47,231,211,186,121, -131,206,113,221,234,10,14,182,234,216,227,92,109,132,237,81,115,174,84,156,132,59,238,234,112,180,235,116,237,99,171,90,111,214,235,159,239,250,151,197,229,116,218,172,78,171,211,109,119,58,248,142,219,115,255,128,42,112,174,237,243,254,238,200,53,0,14,104,209,110,125,238,97,175,195,207,116,219,107,183,221,139,114,254,188,190,217,107,162,219,228,118,53,80,250,68,204,161,217,71,126,209,15,87,22,245,170,179,115,85,49,91,196,116,149,163,145,74,46,171,231,194,9,86,209,179,133,172,9,153,173,155,194,50,181,150,138,185,205,156,153,45,15,208,202,4,188,249,39,186,21,50,147,109,34,84,179,69,208,130,13,233,14,229,98,73,149,48,168,13,55,144,218,61,47,129,183,121,254,159,81,112,59,224,5,125,16,67,187,142,13,153,10,3,59,238,213,247,43,60,153,47,185,185,187,193,141,205,167,65,62,209,172,108,118,123,94,235,232,11,104,59,191,6,51,16,26,84,170,214,87,50,64,57,44,57,121,241,219,251,237,11,222,250,116,243,136,93,42,200,153,173,220,190,22,249, -46,13,87,160,1,88,193,30,216,158,54,184,162,135,158,45,222,5,234,20,197,164,104,51,65,96,16,224,10,232,199,149,21,228,148,24,135,134,201,105,34,183,172,232,154,36,106,218,129,137,169,229,121,48,214,253,111,40,149,206,250,163,166,118,74,166,118,64,243,107,64,53,108,83,231,3,19,210,21,200,144,79,69,109,169,113,67,115,227,41,135,118,2,114,23,161,23,121,46,199,160,10,164,171,250,237,77,24,176,87,159,157,195,241,186,133,93,167,156,31,249,62,48,119,229,197,231,181,155,25,63,1,195,189,157,41,205,210,124,11,196,228,89,233,87,90,232,41,193,57,85,63,0,219,203,221,24,97,218,219,212,85,229,46,241,237,25,60,28,85,184,8,147,126,193,102,220,140,74,113,3,0,29,15,5,136,106,102,209,2,214,84,23,21,121,116,36,10,42,223,55,42,73,67,13,26,129,65,91,7,191,249,165,66,220,16,132,176,7,132,54,224,210,208,246,237,108,52,218,157,86,175,219,242,57,142,118,215,247,240,186,95,255,190,27,25,252,230,243,240,220,175,199,225,163,227, -47,243,238,118,121,250,56,19,40,53,158,64,231,243,198,57,126,42,137,214,187,63,238,127,115,72,14,160,235,158,126,87,217,172,64,249,237,66,37,52,118,195,225,20,198,107,7,85,122,210,182,85,109,237,180,222,92,193,116,179,71,83,74,224,203,80,100,16,132,32,80,145,38,111,107,69,103,144,104,168,136,191,66,170,32,174,255,68,157,248,97,82,212,11,167,32,173,158,12,81,177,188,123,140,203,254,90,251,62,175,233,71,246,225,121,223,199,150,172,87,251,126,74,190,159,172,255,145,237,30,187,95,237,84,160,237,254,114,89,63,40,12,112,112,22,54,116,3,111,166,254,170,25,194,113,167,170,87,154,45,82,246,183,8,108,63,159,209,235,199,251,189,126,68,222,215,141,188,223,22,54,27,143,247,59,76,67,186,157,175,11,250,30,174,165,221,45,224,127,210,110,121,60,88,165,80,210,47,75,240,93,72,12,19,97,15,152,86,245,65,104,3,67,83,24,5,130,33,246,232,170,104,26,240,47,129,123,46,199,91,92,145,43,98,231,250,189,84,75,106,150,180,21,85,106,35, -151,46,207,213,189,18,231,94,71,190,170,246,18,172,111,151,108,143,183,196,186,11,102,87,11,197,209,108,253,198,137,191,77,117,189,90,46,184,43,236,103,188,98,112,120,12,21,131,203,98,125,222,97,97,191,221,245,47,189,111,100,242,193,1,240,126,168,245,25,133,252,183,183,47,247,182,124,30,25,107,138,131,42,20,207,66,241,76,122,231,246,235,193,49,194,31,17,143,25,181,115,16,178,143,119,164,101,82,141,172,105,155,16,128,37,241,128,2,226,226,37,137,154,205,39,157,83,158,130,199,178,174,132,182,158,210,138,3,239,52,119,249,172,95,208,242,110,30,155,216,110,222,234,166,76,76,105,105,185,255,68,235,155,235,147,245,175,252,242,235,191,37,108,160,27,223,208,95,91,167,199,33,63,69,73,89,186,135,123,77,250,249,13,5,199,250,28,92,190,49,228,21,178,186,134,79,145,195,224,42,131,185,74,134,85,157,42,139,5,11,150,231,188,132,183,120,241,89,148,85,173,4,126,179,146,254,224,202,136,228,203,111,160,129,80,77,243,86,240,137,216,219,61,251,109,42, -70,103,81,57,142,222,18,78,51,77,66,49,113,188,95,193,71,176,179,161,177,187,56,182,208,37,169,134,200,193,188,178,202,190,140,48,67,47,231,69,101,54,45,136,79,97,28,226,169,142,90,89,27,43,24,184,218,130,169,7,118,248,169,31,74,59,33,50,154,69,159,178,150,143,107,150,55,10,18,134,115,242,148,116,130,144,207,68,210,96,27,102,61,12,252,11,216,95,119,219,251,2,67,178,174,222,115,128,55,202,77,103,247,249,133,222,98,232,190,14,27,216,5,68,240,155,121,119,211,117,179,87,45,192,165,130,55,103,145,253,52,170,110,236,86,28,106,23,84,100,228,228,94,21,246,153,41,40,142,84,125,53,232,213,208,154,79,164,164,74,3,213,203,19,80,142,25,15,45,85,83,36,213,144,82,55,38,105,254,10,202,236,87,128,194,74,130,186,169,90,160,156,238,38,209,15,78,12,93,161,181,95,3,101,231,55,231,42,160,103,97,224,157,133,250,110,102,101,170,124,225,29,135,203,102,115,90,222,7,60,120,63,7,153,76,111,228,114,213,244,242,88,10,45,151,199, -120,247,119,8,246,239,252,104,179,223,173,231,157,75,125,128,80,39,199,31,160,55,155,30,224,155,9,186,246,15,17,171,255,88,113,197,106,133,66,137,248,41,211,25,60,186,85,164,70,10,117,170,185,0,169,217,184,33,54,96,73,81,63,237,202,244,161,145,181,179,170,181,172,46,149,166,162,156,152,1,158,252,165,3,133,148,202,160,155,171,84,69,158,54,147,23,155,136,171,121,250,123,158,223,126,43,235,245,86,191,119,206,206,222,217,126,191,3,52,71,137,254,126,179,77,104,245,9,145,4,137,241,114,174,236,44,167,100,163,98,60,84,112,215,178,138,179,108,163,111,174,141,219,121,191,123,160,63,49,27,239,251,208,221,217,27,160,185,235,234,113,95,189,55,68,188,223,63,239,34,251,253,177,157,205,100,127,187,156,182,183,230,30,216,153,25,75,186,176,18,152,27,148,76,95,87,135,25,173,232,40,101,71,192,254,82,62,82,216,64,36,134,71,9,188,56,47,152,136,81,130,234,65,134,68,220,230,195,48,225,36,113,120,150,228,90,231,25,109,196,211,32,233,202,128,83, -133,154,218,221,93,200,122,196,191,177,213,57,221,229,228,25,24,240,64,204,198,103,156,126,198,104,177,179,186,87,127,51,240,225,109,180,115,177,49,83,96,126,119,210,179,79,64,192,78,135,3,225,164,192,222,217,134,188,115,183,84,175,197,226,245,238,28,50,166,232,183,36,2,209,133,182,90,19,210,90,103,204,96,40,197,240,250,149,176,65,111,104,132,161,154,128,18,121,172,34,79,75,16,97,120,223,24,96,87,55,44,158,191,22,79,200,144,108,99,213,79,96,12,29,233,118,10,129,72,100,14,127,188,128,69,244,119,120,7,36,164,77,177,178,145,99,145,213,197,33,158,244,142,174,228,96,248,159,130,211,101,224,59,193,70,208,18,39,9,24,42,140,66,7,105,180,208,39,81,83,123,79,47,178,211,104,112,99,113,52,235,176,179,204,86,206,159,188,50,141,5,232,118,44,246,104,127,211,104,131,35,253,56,70,93,246,93,6,111,29,231,213,109,166,120,228,28,152,121,142,100,250,10,157,199,221,197,159,144,169,44,15,154,147,168,67,131,161,69,169,199,6,1,207,151,11, -89,210,148,5,154,54,53,251,44,137,71,210,208,51,27,248,236,54,7,77,75,155,243,18,87,33,66,160,22,118,255,33,37,122,122,183,100,60,238,75,154,91,138,93,81,126,2,254,144,1,124,174,114,33,9,243,50,26,185,175,97,96,86,37,98,177,94,28,246,106,145,8,225,76,132,66,45,157,82,86,45,177,123,8,183,93,95,237,65,245,200,186,218,122,206,247,72,111,72,112,91,108,231,213,239,225,251,36,231,139,189,183,107,172,217,236,246,193,146,78,250,68,149,254,129,177,203,97,91,42,216,234,179,119,136,253,162,136,23,181,176,1,181,73,239,71,52,189,18,32,63,64,94,248,197,8,57,44,12,0,11,71,126,75,100,47,197,7,73,201,128,125,169,162,106,234,152,101,241,196,212,48,173,235,160,251,169,166,174,28,251,104,106,222,255,3,209,207,161,98,193,231,226,94,101,163,67,225,236,236,244,234,245,80,183,227,178,123,61,222,136,221,225,249,215,236,55,223,241,248,237,92,82,127,45,91,158,224,243,222,127,214,87,247,3,239,254,158,220,191,199,228,219,209,233,100, -221,239,27,20,134,217,66,60,0,115,219,251,184,241,207,251,235,123,187,191,177,151,247,110,252,30,221,164,63,175,215,203,254,123,7,106,102,114,117,77,121,0,154,201,237,244,236,156,241,245,143,125,180,147,233,239,253,120,5,59,35,83,248,143,130,154,134,162,130,234,219,138,37,177,16,47,112,215,72,178,74,28,155,53,96,197,67,70,205,189,254,36,232,77,226,164,50,233,255,197,228,251,42,237,42,187,239,87,230,222,45,43,181,223,15,164,54,188,178,127,241,11,186,230,122,193,98,161,66,189,50,182,187,38,156,196,0,41,137,250,8,197,70,50,62,189,49,166,31,62,162,69,251,115,235,124,239,171,238,222,174,204,137,239,165,206,215,185,122,188,190,239,247,57,237,125,51,157,145,139,166,219,122,219,109,159,199,245,207,167,237,222,102,171,126,202,117,240,130,134,57,48,116,28,236,132,63,194,97,66,52,126,49,189,47,161,213,120,18,16,160,183,26,17,110,138,17,87,36,10,4,82,141,222,10,5,185,16,211,96,154,22,243,156,239,6,195,120,136,133,163,90,172,91,86,33, -21,151,14,186,132,230,243,103,200,228,99,50,11,197,140,117,0,51,72,51,255,18,232,64,0,4,65,51,27,217,175,58,141,131,56,140,147,1,228,154,120,108,63,250,34,167,186,123,79,79,247,187,111,126,95,213,9,73,37,64,244,202,104,42,94,178,198,203,142,58,7,107,139,48,194,156,132,217,46,238,107,68,27,228,226,136,100,43,73,170,188,129,201,170,233,244,72,34,73,110,190,15,39,206,110,223,32,189,225,197,18,177,110,0,66,127,33,67,98,30,46,48,228,129,121,64,93,182,102,241,204,238,226,33,97,67,137,65,220,2,11,196,161,136,1,126,66,232,48,133,152,19,183,104,217,206,7,187,68,229,95,18,91,45,197,7,110,11,115,6,3,159,210,115,137,169,155,240,230,106,198,82,165,61,15,113,119,56,21,159,92,63,91,109,203,185,140,181,213,116,14,187,72,99,183,126,182,26,93,77,110,250,240,20,212,29,30,254,131,76,20,120,36,176,192,194,240,210,158,34,166,180,250,80,89,19,122,205,213,213,29,169,0,182,179,146,37,232,37,37,106,127,249,34,96,9, -10,18,13,215,58,248,51,84,203,202,170,29,133,96,133,180,42,106,222,144,97,229,79,242,150,64,189,21,78,201,249,47,122,109,178,148,190,170,85,53,241,231,65,236,25,179,167,99,210,157,37,52,22,151,208,33,185,0,41,97,136,216,47,19,43,4,136,3,236,133,53,4,217,148,97,79,115,138,180,157,239,15,207,124,7,215,187,123,11,253,111,196,226,172,160,187,91,72,203,67,153,180,220,134,197,251,182,28,190,250,107,229,57,52,222,22,105,43,253,113,107,15,215,237,20,52,101,169,172,75,90,179,102,130,210,148,27,22,77,124,126,201,170,244,75,129,77,51,109,45,129,48,40,132,149,74,7,73,250,124,131,220,168,59,12,90,191,109,136,53,15,13,74,168,234,8,234,215,133,110,200,122,161,162,138,162,18,103,59,45,83,86,46,98,68,91,22,131,232,175,187,252,108,5,1,119,103,245,221,55,202,156,103,164,164,202,175,82,193,102,52,27,207,47,212,17,153,62,165,149,47,164,130,151,92,53,90,232,182,219,118,127,32,102,199,254,57,157,54,45,255,83,135,183,245,142, -39,208,203,101,243,245,128,50,224,85,230,123,222,79,199,143,175,50,114,165,224,54,26,240,182,203,110,121,127,90,193,238,154,211,254,243,145,116,205,106,147,170,84,161,209,33,127,195,150,4,19,200,181,139,163,6,159,65,128,0,159,58,138,176,81,71,246,108,228,6,9,106,117,132,108,92,16,227,56,168,31,199,40,27,34,86,196,81,92,3,73,126,33,191,213,84,73,182,178,159,231,89,221,221,100,120,189,105,219,251,44,106,198,179,189,15,79,97,189,39,61,148,110,203,181,93,255,158,165,143,64,152,208,60,53,36,188,0,49,86,84,146,119,70,251,50,68,186,84,62,48,73,244,89,205,254,94,183,221,215,243,83,187,15,179,221,15,232,203,118,160,170,156,77,23,0,61,191,191,207,126,187,140,176,122,38,22,156,132,118,241,127,96,145,137,85,66,187,122,167,213,235,180,162,197,30,51,27,60,70,99,181,194,240,64,158,82,247,242,166,73,73,62,12,67,207,140,252,212,98,140,68,249,156,34,234,47,205,79,65,235,238,110,66,128,109,27,169,29,63,195,24,168,196,83,86, -250,248,56,119,145,72,125,163,225,254,235,14,110,13,69,216,165,25,227,21,34,233,81,171,154,113,162,10,221,63,29,5,160,75,196,201,67,144,139,232,167,65,238,224,132,161,137,60,141,54,11,104,166,183,151,101,169,186,54,159,45,149,185,49,107,243,246,116,90,114,27,202,146,123,231,94,183,255,253,24,106,122,131,24,202,8,4,219,19,147,236,202,16,131,26,66,130,237,50,190,16,154,44,193,37,78,122,79,116,134,40,100,108,217,152,143,128,146,74,43,160,182,9,74,44,137,140,224,76,51,91,221,197,35,18,176,32,36,156,96,96,108,27,127,74,59,201,93,190,11,135,152,234,253,222,166,125,220,7,116,33,128,229,238,9,82,150,98,143,183,192,40,38,11,228,120,0,15,28,254,66,244,53,230,208,133,96,151,185,98,231,128,146,239,193,198,244,13,222,232,146,237,188,107,202,218,43,128,205,202,141,121,246,185,202,119,25,87,211,90,157,37,206,243,250,18,123,2,35,18,83,119,42,93,3,128,27,9,181,173,179,56,111,94,27,130,202,170,148,52,147,142,186,134,156,148, -232,223,210,12,245,180,168,94,60,98,147,133,163,146,231,50,152,130,24,100,245,88,151,149,235,107,157,168,159,182,199,136,149,196,87,140,232,212,24,60,147,212,13,197,64,190,19,235,110,189,179,183,57,187,199,95,211,81,75,50,205,211,28,10,210,4,87,243,25,138,119,28,40,165,10,129,250,206,98,98,59,34,3,76,50,153,74,250,252,31,64,194,69,79,212,111,204,1,29,208,218,109,251,205,77,205,106,44,218,142,170,230,1,125,109,215,167,238,249,74,13,29,31,119,203,187,120,106,56,206,129,58,206,17,154,205,250,248,252,78,197,18,182,241,59,165,180,46,196,40,77,173,46,73,52,84,151,172,198,184,100,80,144,125,11,74,85,113,64,56,121,244,28,17,77,173,141,244,198,248,31,191,67,212,5,155,191,155,7,252,81,53,77,235,212,213,12,139,17,161,195,186,46,115,162,179,129,187,94,40,226,139,143,144,182,197,180,23,67,240,225,49,2,13,64,230,166,253,125,183,209,217,244,218,173,118,163,213,85,245,234,190,134,199,235,70,219,237,46,207,199,253,15,223,166,199, -193,167,162,138,231,122,40,162,15,184,42,199,52,119,136,253,249,160,29,142,3,14,30,132,136,242,251,166,127,129,195,237,183,92,156,150,183,227,0,58,187,80,128,13,12,124,211,211,211,87,63,3,247,121,249,197,42,221,229,159,74,192,58,125,89,65,194,59,250,7,168,150,161,240,229,226,220,63,76,47,215,36,116,29,21,45,169,147,233,30,138,232,240,164,194,102,104,123,83,18,212,194,108,21,101,203,123,114,110,76,186,91,109,171,211,217,253,199,199,125,223,226,61,30,136,199,251,156,163,157,254,81,226,245,101,119,128,110,101,94,166,76,233,178,135,202,105,113,60,11,16,48,157,239,76,242,123,19,236,183,207,237,7,162,222,157,176,238,253,113,189,208,115,52,93,151,219,246,73,217,236,238,150,199,222,88,214,108,205,102,155,169,178,109,178,82,165,112,183,246,1,189,185,185,193,200,156,109,213,154,181,86,173,233,255,61,179,211,98,78,25,51,156,105,91,31,171,193,147,171,73,49,163,189,34,166,100,11,117,51,217,228,99,203,66,78,132,65,116,71,105,7,3,70,71,84, -37,42,65,45,254,237,39,140,78,113,21,69,36,42,165,218,207,70,92,45,83,60,232,149,128,7,38,231,26,21,240,196,226,92,108,10,77,66,18,197,1,103,199,103,162,12,249,174,18,248,129,119,80,158,96,38,81,12,16,51,227,221,66,39,98,184,184,205,203,46,206,205,60,121,236,125,203,253,127,224,248,16,137,116,113,136,132,247,99,17,46,191,134,76,167,124,41,188,201,157,222,253,9,93,28,38,224,66,74,253,55,15,179,75,180,98,177,0,144,134,255,210,131,215,16,89,15,162,63,68,28,0,4,32,178,3,167,11,151,120,65,130,113,166,102,141,120,66,144,66,239,45,220,27,180,232,43,121,132,178,90,60,32,100,169,54,201,35,81,72,204,49,222,37,204,142,245,26,22,98,119,159,228,157,220,130,113,91,10,242,81,206,77,50,54,14,250,77,224,166,242,144,32,109,219,64,166,143,80,42,17,149,102,22,50,134,86,180,122,228,35,186,127,134,99,147,51,178,221,234,185,248,79,251,232,188,73,172,212,158,55,211,244,44,234,99,216,184,146,105,19,174,123,82,160,36, -126,211,162,108,101,101,71,178,248,82,242,55,4,79,210,229,114,181,171,32,24,113,28,230,42,2,22,172,127,206,218,77,230,140,136,201,202,251,209,226,16,71,102,68,176,148,81,38,205,183,80,244,242,46,163,248,182,197,7,159,113,92,162,18,62,230,206,66,50,225,180,14,17,158,5,35,56,153,242,141,208,9,140,159,143,109,34,161,227,23,156,81,157,247,203,139,48,241,74,49,4,237,180,171,243,30,233,101,3,84,67,135,170,217,222,111,240,125,147,245,14,59,107,211,189,248,170,56,118,2,215,109,5,41,236,64,11,189,4,177,43,243,20,148,138,144,155,172,225,98,75,157,47,210,176,132,149,58,78,72,74,177,213,99,101,201,70,229,228,33,148,183,89,202,227,90,194,46,245,28,181,10,237,21,188,185,84,204,168,26,122,114,169,168,137,76,176,189,214,30,160,199,227,69,228,112,121,103,59,190,195,101,252,68,177,223,241,135,73,144,93,184,190,57,7,8,0,136,142,129,133,72,135,185,145,145,147,154,74,137,181,151,171,201,222,107,182,154,237,106,187,154,115,126,166,221, -233,132,19,23,195,119,65,105,24,118,11,230,247,112,34,243,11,102,145,31,207,223,182,127,63,223,231,125,58,216,127,142,56,49,236,131,110,201,60,167,22,103,14,87,205,235,236,227,239,238,53,24,45,220,204,235,147,191,245,201,177,13,99,221,157,116,140,96,141,123,105,177,41,156,233,154,70,169,89,79,37,96,138,41,108,193,207,55,229,228,37,233,96,139,114,147,82,89,138,140,184,44,238,189,4,5,111,207,191,75,179,213,21,76,32,150,251,131,253,241,249,136,47,240,19,154,221,26,24,21,47,68,125,248,77,169,50,131,191,159,221,241,24,213,235,46,110,122,234,28,15,140,27,170,29,250,216,170,17,201,58,16,52,55,115,120,219,110,199,115,159,18,36,176,22,223,21,227,252,197,104,183,22,156,150,59,93,60,129,185,100,13,192,116,108,250,115,169,38,182,100,168,149,130,158,140,109,216,204,220,17,206,35,127,225,129,56,14,178,66,110,81,172,241,67,36,72,82,224,167,158,201,191,47,91,229,24,151,226,102,20,122,81,170,251,107,11,191,56,229,152,87,226,106,0,42, -1,37,167,164,204,178,225,136,104,45,9,9,147,251,140,202,104,147,119,176,168,18,84,177,181,37,68,220,150,65,156,10,115,113,42,228,16,28,119,153,77,46,38,71,12,114,68,132,245,77,16,160,113,2,84,233,103,41,204,66,111,249,235,254,194,134,160,221,227,249,125,252,59,112,89,3,55,255,9,25,8,253,232,48,44,15,254,139,244,95,193,68,41,96,49,13,234,34,249,162,207,15,236,147,15,16,133,136,193,243,31,197,48,43,194,220,132,37,48,130,206,66,196,194,54,242,83,162,26,142,64,203,103,114,145,18,71,134,30,70,107,212,82,64,70,40,39,36,158,210,46,18,65,36,238,24,24,37,154,144,228,104,174,200,140,46,233,7,205,48,131,156,156,197,187,33,222,201,51,130,205,145,201,76,205,223,220,201,209,49,137,152,72,58,19,142,4,68,68,100,51,23,66,164,2,149,33,179,238,17,69,164,220,0,189,235,117,106,73,67,16,75,64,253,18,34,32,26,131,203,238,53,159,140,89,140,41,9,79,212,100,9,90,161,128,209,220,205,77,241,145,71,118,204,200,80, -86,212,72,37,81,101,73,21,53,61,73,5,137,195,119,78,67,102,204,244,248,9,49,198,13,76,81,80,132,255,174,143,115,140,234,80,79,170,4,25,27,179,28,203,98,148,165,217,52,80,141,0,22,185,141,24,230,33,192,160,64,213,113,86,142,74,64,100,139,170,4,122,238,74,64,184,66,114,50,174,102,245,78,137,40,28,220,224,254,59,60,26,179,84,82,0,41,142,57,26,39,67,202,152,108,108,250,14,171,77,15,166,138,69,33,253,210,89,170,209,168,43,166,39,178,138,218,40,78,249,49,90,227,173,79,245,3,65,175,41,207,15,107,80,130,18,19,39,232,45,221,23,184,198,4,161,136,115,228,178,85,164,55,20,35,114,7,145,124,69,187,55,93,96,233,197,183,198,198,117,235,188,78,1,35,80,22,144,156,102,117,11,19,24,0,94,45,37,232,61,153,242,177,2,197,16,97,127,12,128,7,66,220,6,206,53,26,234,206,63,121,214,217,181,167,206,198,91,219,250,236,242,124,237,123,35,92,150,89,185,70,112,151,172,6,167,221,220,50,93,151,227,123,159,125,223, -251,98,141,204,89,174,235,129,166,177,207,118,89,37,151,13,94,251,123,129,104,54,190,14,32,90,7,185,188,29,59,96,253,163,107,1,124,98,218,106,125,198,74,9,217,234,101,117,141,149,25,86,14,94,220,110,183,229,43,108,157,104,166,153,206,62,97,104,82,250,203,104,197,84,226,47,219,150,255,104,176,24,207,131,3,249,185,48,45,224,159,113,37,229,221,79,115,72,171,47,151,142,187,158,98,178,184,171,86,171,117,232,186,95,231,147,57,177,9,139,208,254,239,41,227,212,159,139,76,206,182,19,255,28,206,47,160,247,137,219,91,224,31,75,157,26,144,209,13,20,20,196,119,98,172,110,99,99,243,120,221,230,253,217,242,26,65,157,240,28,62,199,219,134,186,239,182,207,221,209,241,117,14,33,130,144,174,70,102,108,74,75,81,10,198,185,26,146,68,17,181,211,76,229,90,114,97,245,248,168,58,70,58,42,83,93,174,181,219,162,68,68,200,148,148,228,78,252,66,247,164,235,233,28,37,88,246,37,255,160,109,64,42,108,16,3,61,176,55,167,196,253,130,205,42,123, -209,63,177,167,221,1,183,106,20,203,45,19,51,203,125,212,180,229,195,152,148,56,28,117,39,103,5,28,93,44,66,28,42,193,165,132,18,181,202,80,145,136,58,145,31,38,200,41,80,125,104,133,242,145,195,49,66,230,15,168,231,31,3,180,93,165,249,38,47,111,239,27,107,126,223,83,160,194,174,152,151,150,123,131,222,70,246,96,32,208,80,160,18,54,9,148,135,68,46,206,151,10,231,135,42,172,150,168,45,188,213,241,200,82,188,170,203,189,108,141,87,159,168,82,141,229,209,27,167,234,172,248,34,73,115,178,232,163,104,85,197,96,79,66,21,148,225,133,25,40,46,135,26,230,234,8,168,151,162,44,98,147,54,51,40,1,149,187,58,236,31,76,112,26,99,220,42,225,200,141,136,187,94,192,38,109,160,66,74,185,117,20,176,140,5,210,158,73,143,155,33,198,36,113,66,131,169,245,101,65,102,76,90,38,210,34,198,66,218,50,109,198,86,232,132,85,173,107,161,148,102,29,105,205,82,155,117,7,182,210,97,140,41,1,213,70,200,44,230,168,168,6,89,29,254,242, -126,192,181,239,187,2,240,227,130,50,191,69,189,16,52,38,10,185,134,14,158,97,221,26,154,37,227,92,179,121,122,67,115,243,82,179,36,195,248,168,241,21,14,190,10,209,103,59,46,232,141,96,16,230,98,3,0,141,128,146,136,152,74,22,84,226,244,96,74,232,180,127,205,131,0,198,218,33,14,165,208,120,104,201,166,82,24,91,122,116,236,243,5,10,249,81,255,217,157,56,235,94,116,211,6,194,122,122,208,203,215,66,176,6,221,75,255,114,123,234,79,149,158,119,179,222,112,110,214,156,179,203,146,125,147,94,83,35,107,124,169,140,182,49,54,194,23,48,39,77,165,173,31,24,227,169,208,110,42,106,86,31,186,131,62,3,121,91,138,17,78,153,173,254,128,222,129,212,114,223,13,173,22,238,242,165,11,174,7,203,61,200,32,24,10,210,11,248,24,52,202,42,84,30,208,169,39,40,206,81,179,255,245,169,239,138,15,11,213,239,89,210,182,223,59,73,234,15,107,9,243,204,173,207,252,234,114,126,113,186,182,18,48,83,162,8,102,240,110,158,183,56,195,192,133,181, -177,210,171,119,188,109,183,123,80,247,252,190,251,211,146,181,191,98,215,112,196,203,204,255,42,156,199,47,68,112,141,190,95,231,215,178,245,91,126,111,239,235,10,59,62,158,238,71,240,94,10,185,177,248,1,118,59,189,227,114,193,16,3,115,130,113,2,41,117,183,206,80,245,232,143,202,199,101,225,251,154,167,218,42,249,207,2,184,74,80,165,236,194,162,114,72,11,3,134,211,218,218,214,82,255,14,11,132,108,238,78,11,54,98,182,18,124,66,10,204,219,203,131,131,124,57,109,254,231,247,121,62,156,110,230,242,248,190,42,145,118,87,85,241,247,254,76,103,44,17,43,182,239,200,86,186,22,174,55,120,120,139,232,52,24,82,80,23,157,245,18,183,153,158,154,219,175,94,199,233,114,122,220,244,223,237,125,209,223,142,34,143,247,100,164,107,156,242,109,141,104,153,122,42,40,5,249,168,56,163,66,245,210,92,136,141,14,88,0,129,176,144,27,156,113,101,90,146,92,78,200,45,54,118,53,189,186,168,171,244,204,130,18,84,148,56,24,167,103,104,58,41,254,124,116,164, -3,177,6,33,23,180,127,192,216,69,31,221,43,200,61,69,51,34,139,204,48,124,168,128,250,89,60,32,59,32,29,6,199,82,193,4,47,128,239,141,14,8,24,62,17,183,19,50,179,83,117,130,82,64,186,248,187,64,78,6,215,99,56,238,215,156,211,197,83,95,200,83,137,236,222,190,74,4,14,61,180,118,61,207,243,240,15,40,145,189,52,45,10,135,74,81,208,240,49,47,207,139,253,103,151,128,117,40,160,45,167,36,27,46,226,225,196,117,42,150,126,103,66,74,56,74,189,133,177,220,59,19,229,75,157,127,83,15,10,79,170,70,139,39,175,69,163,59,76,166,41,170,71,140,82,44,95,178,9,74,237,76,105,120,91,162,5,181,72,194,212,28,130,113,66,8,133,41,242,3,133,53,43,99,35,40,109,64,60,22,2,144,203,24,113,102,176,90,40,131,213,41,27,73,33,165,46,149,3,133,149,186,29,57,68,204,180,113,76,93,183,180,99,41,82,198,74,156,219,104,248,159,172,153,80,58,160,5,44,89,41,42,135,177,34,149,188,16,69,4,139,32,181,224,46,0, -86,199,84,164,154,153,28,133,21,70,164,120,248,251,249,94,189,239,55,212,203,111,217,26,219,191,230,175,110,181,178,21,195,78,250,211,49,52,227,188,92,115,249,155,27,74,228,22,67,200,248,222,214,15,223,32,149,249,89,28,231,30,122,158,235,217,207,198,110,24,52,119,26,230,50,55,94,81,56,33,37,60,210,41,199,131,172,123,229,226,95,214,118,98,196,52,140,33,113,173,83,91,24,179,75,245,98,74,142,26,154,139,154,16,209,154,222,108,18,137,213,59,69,214,155,54,72,245,244,205,244,216,197,206,218,59,3,113,86,0,110,159,117,174,98,129,36,80,232,107,93,100,173,236,220,18,98,170,153,29,36,53,140,161,216,84,116,174,136,67,239,215,117,134,33,118,179,244,203,139,111,10,14,134,227,174,1,208,194,72,49,134,201,108,16,40,85,92,201,86,251,227,252,57,222,176,137,51,128,235,157,118,20,40,89,204,193,82,226,39,72,39,117,43,67,233,8,30,184,144,67,25,184,179,129,150,34,33,106,72,220,210,74,225,213,246,33,16,245,13,82,132,252,44,141,205, -159,192,21,188,251,149,245,22,216,167,168,176,184,79,78,214,135,94,98,253,121,47,71,219,105,249,245,221,46,168,110,123,138,222,77,63,191,247,251,23,42,156,110,123,107,87,208,178,249,121,47,218,223,214,53,203,217,178,58,193,152,32,180,102,119,214,28,118,123,205,114,119,156,222,66,179,222,254,73,67,249,74,41,68,66,86,152,8,249,223,200,227,99,84,115,63,233,187,226,116,118,129,225,191,163,69,93,210,29,203,231,208,208,1,28,177,128,21,148,29,152,8,4,130,226,166,35,172,28,1,189,117,238,179,152,117,191,64,95,243,233,123,248,30,162,183,159,143,2,57,135,127,135,77,106,51,82,61,108,85,111,143,131,16,150,33,26,10,128,207,132,22,17,163,228,7,221,224,193,89,174,22,43,54,171,201,78,181,255,237,195,181,8,58,217,221,154,174,229,39,229,126,156,228,77,168,107,5,216,81,225,153,179,131,161,225,34,66,221,235,9,133,132,38,115,53,67,116,172,254,195,196,220,206,200,226,20,114,81,90,33,206,113,217,227,91,90,17,233,75,34,173,105,96,42,33, -4,54,218,73,53,220,198,41,252,201,44,56,13,50,164,177,179,178,197,15,120,175,213,19,2,143,59,72,20,19,92,115,170,144,16,189,22,245,116,152,212,26,4,148,188,227,15,145,79,227,145,6,132,162,82,52,206,165,25,169,204,240,56,48,84,136,55,97,38,168,115,190,50,68,206,93,49,133,102,201,141,246,28,153,99,127,200,161,239,36,109,59,14,21,152,233,79,233,38,217,220,246,65,236,98,213,105,157,200,4,14,157,143,142,225,154,40,43,229,4,4,234,84,141,125,136,19,41,193,73,173,208,185,68,6,146,251,40,168,50,37,153,169,115,197,193,185,164,235,246,7,35,75,30,56,204,59,126,150,48,200,136,39,186,129,129,69,40,101,200,38,227,84,148,69,7,40,26,3,18,20,54,203,88,8,105,116,194,220,41,176,177,147,249,152,74,136,2,25,210,166,14,87,167,187,225,183,4,155,37,87,31,194,72,104,159,34,229,234,80,119,202,24,13,67,234,192,96,111,99,108,208,175,209,26,115,126,24,102,169,172,133,56,90,97,41,222,73,217,66,166,220,146,64,102,255, -218,135,114,135,200,244,202,42,62,242,4,213,146,197,138,189,142,240,179,21,21,75,138,147,49,41,75,139,163,20,199,138,124,89,198,243,143,239,202,125,209,207,181,111,92,37,254,52,137,111,159,178,40,8,50,216,69,82,5,146,72,222,105,133,46,241,169,240,22,203,94,179,130,255,141,150,191,81,243,135,152,53,125,101,166,175,252,102,249,170,204,28,51,189,39,106,212,96,9,8,255,169,12,169,190,25,186,222,233,184,63,212,46,172,159,132,24,191,197,142,107,201,81,115,96,42,63,218,85,217,142,75,92,45,163,243,88,4,81,196,9,26,134,23,205,165,246,223,108,130,133,18,38,86,190,213,209,229,90,127,247,54,80,108,198,125,12,126,144,158,111,245,2,100,10,140,24,5,84,74,87,78,60,16,1,65,39,199,8,188,36,92,190,20,94,156,43,188,192,5,192,36,44,235,194,67,130,34,34,221,187,16,170,121,165,74,120,157,38,228,235,135,195,194,92,121,8,73,14,13,145,43,34,8,229,195,98,232,141,13,226,154,181,182,249,11,64,58,131,153,2,235,145,219,154,178, -25,95,214,239,221,243,252,92,135,187,231,229,251,202,180,34,112,66,100,227,112,193,109,186,155,182,119,216,130,2,109,55,160,131,137,82,253,92,145,238,10,210,110,111,58,222,45,43,254,111,185,75,116,20,232,205,227,130,194,118,78,177,113,217,28,198,131,179,221,140,214,209,222,90,201,170,122,172,42,91,120,10,172,239,42,98,173,70,33,52,171,145,155,168,134,13,135,205,118,6,35,101,55,177,147,138,200,75,36,105,222,148,175,181,24,109,22,35,210,106,54,90,142,55,48,85,206,255,221,63,22,61,8,252,238,134,219,81,3,55,220,27,140,212,40,160,86,19,34,225,14,131,236,4,249,8,55,161,195,253,222,154,76,5,60,58,245,60,165,214,162,185,205,87,25,40,16,42,123,80,42,36,75,47,39,51,128,80,144,3,63,46,113,199,208,254,98,8,200,122,7,66,28,195,86,134,28,31,87,90,160,22,163,157,35,27,220,137,18,42,82,129,144,165,34,226,110,182,89,65,182,119,120,143,213,50,94,20,75,94,151,114,90,243,137,223,78,114,11,127,106,172,134,87,104,42, -205,16,157,249,9,104,165,173,5,10,147,86,237,108,120,116,148,49,145,68,212,252,6,6,229,124,126,219,31,195,2,240,4,108,10,90,126,105,250,83,142,177,185,239,80,251,140,196,105,13,148,140,80,104,175,162,135,106,14,11,154,137,130,251,21,207,50,249,255,146,69,249,72,27,41,33,20,222,252,21,218,212,205,228,159,157,42,186,233,243,208,61,101,140,206,116,248,154,223,213,128,239,254,101,138,237,48,136,235,41,35,41,15,240,148,209,5,141,255,95,181,23,222,229,147,33,50,15,137,89,132,52,185,2,192,55,19,123,166,146,238,161,143,131,47,78,223,9,112,161,107,233,182,21,145,72,8,161,104,124,154,157,170,0,212,68,44,65,211,64,207,51,65,128,69,200,95,37,195,21,225,210,136,107,144,226,204,180,181,12,55,74,8,102,191,172,161,33,17,213,228,177,4,232,50,146,138,109,242,178,240,250,103,119,111,243,86,74,29,147,134,101,98,9,65,204,70,27,140,25,185,13,200,31,18,50,139,104,82,88,48,50,9,116,49,121,211,163,180,181,139,199,40,220,0,99, -250,74,48,77,161,32,218,233,57,141,237,53,229,172,164,201,176,104,244,190,66,218,203,77,253,186,216,218,203,94,114,113,241,217,76,190,166,102,252,142,39,255,194,228,92,95,220,52,9,76,6,104,207,52,133,204,54,219,24,181,115,10,177,30,130,200,79,95,223,105,45,173,148,217,75,27,137,233,252,136,56,107,10,32,82,216,231,34,251,242,34,186,103,86,191,152,179,81,33,165,76,252,11,25,254,213,60,5,38,198,213,52,60,75,34,54,125,217,205,89,129,180,53,95,14,77,76,195,4,194,21,2,155,81,243,111,97,231,22,43,127,193,52,166,184,0,199,195,84,213,6,86,1,36,176,218,99,120,177,48,24,87,138,230,10,68,143,73,153,53,232,57,40,136,131,8,252,49,58,248,40,244,33,214,4,16,240,139,188,34,13,62,150,97,120,187,238,221,8,185,223,27,118,51,196,71,8,23,204,66,250,25,72,60,70,230,254,169,56,106,91,90,207,65,12,32,217,122,230,246,34,109,239,23,187,196,104,106,184,155,13,15,166,231,115,182,220,64,33,2,224,188,91,78,200,187, -149,113,176,159,14,250,207,242,224,251,124,161,123,136,25,222,135,123,246,58,127,18,207,106,137,10,54,243,239,129,43,204,87,19,193,134,217,178,160,95,159,41,235,129,218,155,36,27,236,15,226,109,80,23,168,176,216,106,65,218,176,253,200,31,84,196,178,20,181,232,160,235,197,87,211,101,170,117,61,166,200,189,170,223,223,117,25,169,76,34,155,21,26,77,211,245,47,196,231,220,233,94,86,111,135,217,251,192,130,177,11,240,119,193,209,118,97,193,167,198,119,92,169,96,158,150,128,49,142,247,227,59,224,29,247,170,126,156,237,86,172,1,106,4,243,48,98,98,66,69,85,65,211,214,101,136,40,70,73,71,7,48,162,30,196,223,65,206,10,40,56,42,24,170,226,107,88,104,57,27,41,33,129,3,36,32,239,13,0,70,118,159,183,32,152,146,92,26,135,170,223,90,99,14,62,155,179,175,217,115,26,40,167,69,50,42,94,136,105,86,42,57,61,107,164,196,105,9,170,100,25,99,253,233,29,140,71,79,132,119,75,30,86,9,135,86,82,222,10,164,137,74,4,5,175,160, -229,81,242,15,57,139,53,179,244,15,40,33,57,19,91,117,225,11,174,239,208,97,255,141,67,19,136,126,74,195,158,89,91,100,85,20,102,228,47,180,119,250,28,107,215,207,204,150,125,18,76,220,225,97,106,20,233,12,199,184,17,129,19,114,102,88,254,164,249,136,166,114,246,228,4,89,163,57,54,140,111,129,87,104,254,97,30,80,140,133,122,23,73,155,209,67,2,133,126,166,141,97,34,96,78,176,183,128,232,96,107,82,129,32,56,34,34,55,143,73,151,11,249,66,76,44,18,52,229,216,129,52,3,0,208,187,246,226,237,144,9,4,186,220,11,137,8,78,104,249,200,68,43,81,144,158,245,169,111,75,145,201,56,58,235,180,62,126,141,61,18,13,181,187,163,192,76,37,169,131,218,206,160,196,76,135,225,190,74,79,31,69,231,199,215,88,164,235,200,209,153,41,121,175,227,62,10,245,166,72,77,52,168,179,73,139,188,34,104,193,31,120,64,217,74,92,93,141,71,215,86,91,140,67,125,62,9,178,240,137,131,214,172,178,148,130,131,207,194,25,29,11,111,196,82,98, -6,76,176,72,216,165,92,38,95,72,68,32,204,245,161,106,92,203,158,55,242,115,191,128,139,52,173,144,173,147,14,148,205,245,192,78,176,12,46,156,203,208,98,190,2,224,13,249,11,104,66,122,255,67,26,60,201,35,235,165,5,233,197,46,17,0,202,104,230,84,30,94,255,37,179,185,240,123,231,199,181,110,12,154,181,91,176,114,32,151,238,132,11,137,253,62,25,3,193,132,80,134,42,248,200,127,219,2,3,69,184,147,249,8,38,173,73,208,140,185,16,20,180,136,38,193,104,30,97,253,126,64,66,171,107,178,37,99,58,23,66,230,52,218,10,5,90,60,80,32,71,184,45,20,143,101,94,24,88,87,78,183,171,104,73,166,136,188,34,18,168,126,198,95,237,29,189,221,8,212,145,184,218,115,34,233,3,129,199,120,253,71,129,162,171,107,151,73,156,51,195,208,30,203,224,41,92,57,97,93,187,181,5,6,252,53,179,109,221,85,206,10,83,253,92,34,172,104,113,109,52,223,187,227,101,63,253,76,238,219,17,196,42,108,194,156,104,49,224,85,240,252,44,162,103,58, -180,141,112,193,238,176,217,235,101,126,97,130,200,25,243,204,183,229,57,204,219,89,107,90,121,230,108,45,162,210,0,70,43,62,118,29,157,24,86,168,28,11,53,174,75,164,147,185,48,102,91,1,37,69,105,130,118,64,122,216,59,27,66,80,104,55,89,78,184,107,69,171,121,106,52,219,109,150,235,145,117,237,125,249,241,175,39,115,227,19,129,36,255,214,18,45,176,10,223,3,204,249,90,120,233,178,247,233,202,234,90,177,174,174,76,132,102,41,132,24,142,191,107,1,37,240,18,127,19,180,194,213,25,173,157,150,79,13,84,114,96,7,90,133,104,111,141,231,234,233,37,113,49,129,114,140,18,140,246,38,95,159,84,202,26,113,63,68,64,142,7,234,24,21,17,194,206,149,208,242,70,148,179,44,198,116,3,14,204,49,151,4,0,184,232,102,9,34,22,143,44,16,28,76,173,144,87,69,142,115,80,59,72,108,152,26,80,227,156,28,2,199,241,36,172,226,35,190,20,48,179,110,23,34,159,75,62,5,159,21,93,39,150,162,148,141,137,19,82,236,51,36,69,157,147,180, -251,8,30,125,109,130,114,160,251,49,204,176,215,64,131,47,49,252,91,254,97,75,52,145,42,222,127,65,254,178,128,13,125,12,140,74,224,132,52,94,85,163,246,17,179,168,223,142,199,167,241,60,106,120,166,108,232,135,32,2,77,3,8,91,9,5,120,104,136,10,26,240,153,240,133,52,53,169,197,219,17,19,139,144,79,217,107,205,28,104,196,200,129,24,113,31,73,130,65,23,84,169,43,33,104,229,158,28,225,186,212,26,0,80,48,178,79,172,113,3,39,87,185,41,4,169,3,23,48,133,44,78,124,112,206,51,60,35,27,60,150,26,3,163,2,67,141,58,190,242,22,111,250,124,130,215,54,222,234,108,48,5,116,96,110,158,165,157,192,69,239,255,35,225,172,182,92,87,182,36,250,235,102,6,153,153,93,102,230,50,51,51,51,51,187,204,220,251,244,213,187,244,160,17,25,17,115,41,83,115,166,192,122,57,122,12,173,131,105,0,134,198,145,151,166,125,26,207,5,61,242,198,97,145,24,216,91,68,147,232,203,56,184,169,43,185,199,43,220,60,168,53,145,51,33,57, -57,210,48,207,158,141,154,60,28,163,31,79,82,112,133,6,241,232,253,49,180,114,110,91,210,221,74,30,52,76,144,212,17,52,104,253,92,252,77,176,102,128,132,141,40,54,100,226,186,245,223,7,170,185,90,218,6,236,208,52,206,153,239,68,252,250,175,39,222,11,27,214,208,114,233,94,213,180,236,154,121,183,40,74,157,132,125,191,29,146,201,152,202,33,228,191,167,74,85,16,77,8,17,22,0,124,6,99,191,47,169,156,160,116,192,76,10,11,233,150,59,201,33,134,192,91,168,164,69,111,118,67,246,24,167,98,174,158,41,85,127,13,0,4,23,11,195,10,239,171,228,143,98,46,64,241,196,129,165,81,188,106,117,159,78,221,140,154,107,128,193,135,142,63,101,165,30,215,135,12,81,134,64,32,124,15,166,255,250,248,88,156,98,136,92,244,150,144,20,21,98,193,47,249,254,217,152,211,90,67,169,221,61,79,10,81,132,62,44,66,29,80,205,61,174,22,75,195,163,224,236,217,169,139,161,46,61,107,171,152,189,32,107,129,148,131,235,223,63,229,168,59,17,7,200,235, -96,126,193,114,101,173,26,101,67,245,35,219,115,122,142,174,105,179,203,64,173,208,113,113,115,115,101,241,55,74,181,185,42,40,178,102,190,211,101,127,116,221,163,105,88,214,85,241,163,86,188,244,248,209,149,228,124,240,19,180,89,207,243,12,30,253,117,216,239,135,247,254,249,121,126,47,175,115,167,81,218,213,224,84,241,253,95,90,236,8,187,46,157,223,241,254,186,239,239,225,254,189,100,204,87,99,217,118,180,127,56,122,144,200,87,190,153,74,98,225,194,226,47,57,75,189,41,246,109,11,178,67,201,196,81,52,55,191,181,168,35,203,33,93,90,186,145,33,211,26,29,36,236,175,212,16,20,44,76,194,68,138,91,38,59,98,116,131,105,44,197,88,139,183,255,193,96,53,225,143,233,135,134,150,40,65,137,123,56,33,41,171,184,21,82,31,229,162,224,126,105,110,5,48,200,210,118,229,253,214,211,64,192,141,226,236,137,13,130,152,52,148,1,143,184,196,56,242,96,0,82,14,13,89,7,245,60,31,9,6,217,83,112,172,156,87,163,97,205,9,16,19,7,54,101,165, -156,118,97,105,228,161,25,88,226,39,244,143,141,57,191,214,71,229,176,144,190,215,12,192,176,54,216,161,65,74,95,181,2,226,247,191,141,245,5,127,100,140,47,224,246,193,41,49,250,130,1,176,225,82,118,18,42,31,168,165,49,106,181,131,47,38,78,137,194,99,58,242,239,61,108,16,52,146,132,16,144,34,15,245,219,11,57,9,253,37,216,187,219,216,125,84,14,178,7,181,154,62,26,182,63,112,183,50,171,129,87,41,135,169,3,101,206,190,26,117,192,86,166,110,250,40,149,251,108,62,35,107,242,36,108,102,8,230,14,198,56,203,32,132,177,101,160,93,138,157,143,251,225,72,226,98,141,236,50,14,209,244,111,142,9,184,47,107,183,2,96,28,13,107,225,206,241,124,230,217,206,43,30,19,58,193,135,127,251,213,113,142,218,43,78,34,231,226,45,84,184,84,23,217,208,240,218,174,202,80,212,177,16,2,212,196,169,76,101,86,178,229,22,244,42,228,238,60,1,117,4,14,8,64,23,220,30,18,222,245,7,140,195,245,233,216,195,54,16,146,27,84,179,56,68,232, -1,225,12,181,110,130,127,103,191,61,178,217,167,16,117,170,16,68,95,76,156,30,207,90,47,88,92,74,44,158,151,117,74,0,134,174,240,31,61,197,177,175,138,216,44,84,64,234,126,140,247,140,132,105,33,191,252,10,56,102,74,39,201,232,231,201,131,70,62,247,105,28,127,16,70,5,134,86,144,76,172,56,148,61,114,224,222,14,237,11,209,25,48,13,200,213,110,41,5,131,145,69,222,48,176,93,165,91,32,184,112,196,13,29,180,15,194,150,83,166,65,32,95,42,128,137,61,133,2,34,150,31,31,41,224,117,178,181,67,113,107,25,194,245,237,80,118,171,214,145,222,22,248,71,245,143,191,199,168,57,252,190,74,49,130,17,36,159,229,155,199,20,46,172,203,126,211,76,19,50,253,47,69,180,57,115,125,171,251,165,19,130,211,70,218,236,59,204,209,32,74,155,143,186,25,152,31,199,182,227,221,248,0,149,194,211,69,246,93,214,239,39,167,197,110,81,185,220,71,229,150,114,56,221,236,230,54,83,148,5,201,153,57,33,117,216,116,78,174,186,11,121,187,229,98,26, -228,171,100,172,33,179,26,203,72,221,101,142,194,137,176,4,209,7,201,95,185,8,74,204,144,220,234,47,27,90,158,253,236,88,231,179,90,184,185,125,209,184,219,61,111,203,229,245,120,126,125,191,138,247,157,187,0,93,156,11,247,27,223,226,117,253,159,169,198,144,138,70,70,209,109,25,177,163,140,185,223,127,117,17,186,10,36,107,132,197,77,211,81,201,162,128,141,109,251,85,160,12,249,205,106,141,87,210,71,169,198,201,11,231,4,44,5,166,105,142,118,128,198,183,65,129,99,132,7,170,152,203,66,74,151,144,235,17,140,94,142,138,210,205,210,163,180,39,165,38,249,255,226,153,27,255,29,255,22,204,5,184,182,66,162,123,150,220,249,52,175,198,18,155,240,176,82,188,205,163,187,222,63,117,66,31,64,32,207,238,53,208,49,201,0,56,1,215,175,205,3,123,127,136,221,84,154,6,29,39,189,106,4,41,188,168,52,9,150,187,234,252,85,5,201,107,144,154,41,11,204,157,147,83,163,252,64,218,203,251,133,252,161,134,169,215,141,30,167,146,114,27,134,239,136,180, -71,255,59,6,201,114,162,167,204,68,79,122,134,219,40,17,152,48,54,160,213,69,140,194,26,182,14,73,207,71,50,141,145,97,62,185,34,219,200,9,101,114,117,75,39,115,33,205,180,237,139,135,98,32,70,168,161,255,170,197,131,201,8,74,61,192,17,28,40,138,14,7,151,83,110,231,34,210,181,64,45,90,215,17,116,42,197,192,127,56,201,16,202,172,1,31,45,222,125,49,132,135,218,250,145,172,227,50,63,224,249,184,109,184,34,88,176,188,52,75,158,174,179,149,184,95,250,39,27,186,246,227,111,221,221,155,161,14,155,43,44,223,190,209,175,50,19,22,227,176,123,13,25,7,254,122,212,46,203,17,250,240,204,80,212,188,31,86,149,37,173,128,140,53,130,46,96,26,144,231,135,246,7,101,156,202,102,63,179,240,149,50,92,82,28,114,9,50,129,140,16,41,72,62,143,69,53,196,146,7,85,190,230,67,225,155,23,154,205,163,19,241,63,205,111,113,237,145,252,50,1,98,69,110,2,9,253,99,41,42,30,123,170,50,51,144,203,111,20,102,64,7,41,240,65,194, -94,57,6,246,96,22,222,226,0,119,176,38,42,66,101,80,112,191,0,248,92,104,44,18,155,171,200,176,39,234,207,145,27,4,135,62,52,185,237,150,251,183,224,28,155,133,130,129,215,126,148,169,41,7,207,160,125,208,90,47,4,175,133,115,213,224,193,210,173,224,162,214,98,225,255,248,108,80,50,4,135,182,136,230,134,204,43,72,131,109,149,8,0,54,229,157,197,112,99,12,221,194,248,99,4,80,164,143,23,112,141,115,55,243,236,197,222,157,142,230,27,177,154,97,133,92,191,241,93,81,172,180,200,39,185,217,22,150,96,178,154,177,93,34,76,79,101,249,234,214,15,97,109,138,246,33,230,224,248,41,158,123,183,255,179,217,91,238,238,134,183,199,219,241,255,169,98,250,121,50,142,111,245,189,75,187,191,174,99,239,219,177,236,244,152,248,231,155,64,41,24,155,33,151,237,88,82,175,62,119,121,173,119,226,28,145,234,101,128,173,246,20,75,78,186,252,160,192,103,230,28,204,142,109,195,248,1,38,92,139,38,226,185,137,49,196,139,228,195,140,67,35,103,244,109,95, -87,239,254,120,248,197,159,150,215,19,93,209,95,205,78,191,113,20,48,250,180,226,133,77,117,144,249,70,3,231,230,167,146,84,111,39,167,231,218,125,143,155,234,174,63,164,186,31,244,81,23,118,53,11,119,215,79,112,182,114,133,205,226,151,107,205,201,229,119,95,75,151,126,201,241,126,28,27,240,163,80,166,165,18,64,193,140,115,34,115,125,142,195,8,10,32,177,79,98,118,211,131,162,145,119,42,233,123,64,56,6,185,217,63,168,178,122,8,60,72,89,139,250,55,12,207,72,79,220,33,29,136,185,80,205,31,38,38,125,18,75,147,140,132,144,254,104,195,224,46,88,253,71,9,107,5,132,178,101,93,47,39,193,38,112,54,172,0,196,243,114,55,123,176,170,37,116,60,254,190,113,55,182,81,97,72,96,102,185,219,114,32,177,58,13,89,151,23,36,91,139,90,22,114,191,218,9,188,231,251,127,74,154,217,173,181,164,179,15,43,39,32,153,72,248,87,164,68,7,26,126,42,50,10,117,96,221,205,36,168,46,226,64,247,219,106,35,55,151,33,28,216,232,218,190,0, -147,221,105,66,190,20,195,149,237,3,39,186,21,3,13,217,92,224,12,41,31,224,96,6,153,141,34,200,54,50,54,83,58,212,128,124,150,59,76,17,98,161,8,28,41,14,216,67,32,194,15,156,113,244,4,247,251,62,179,128,15,91,40,86,126,14,236,232,255,26,176,228,91,63,126,246,143,153,113,54,253,6,249,71,158,126,170,99,71,2,187,135,98,170,137,71,198,93,16,66,126,157,142,46,134,114,177,236,37,189,206,37,126,216,150,134,74,222,60,47,96,91,209,230,194,149,101,70,26,6,96,77,99,17,24,132,130,142,248,32,2,149,132,10,171,73,91,3,32,70,177,139,138,179,139,124,119,24,97,36,179,233,164,89,189,110,166,175,182,246,161,53,89,52,222,18,215,230,8,77,39,147,151,224,19,248,20,131,8,250,85,115,62,17,144,192,9,68,133,56,164,94,20,50,243,120,179,123,213,86,255,241,124,3,140,148,248,104,113,56,22,97,2,85,192,136,205,248,92,49,88,76,224,117,133,101,123,129,208,185,130,180,94,172,34,161,35,143,24,18,211,176,61,41,93,127, -160,9,207,156,1,191,204,108,200,105,188,234,164,91,138,194,176,23,74,176,141,11,175,19,130,232,181,129,125,145,141,32,91,31,50,122,1,48,162,62,47,227,167,228,73,216,135,24,171,101,161,33,174,139,24,78,64,173,65,50,87,49,137,141,213,13,101,94,152,183,24,100,180,33,158,222,125,54,19,37,136,180,81,129,32,252,91,198,161,192,205,9,149,246,23,41,250,30,134,188,244,227,245,163,95,131,10,80,111,249,1,178,69,88,158,21,167,239,28,54,82,187,148,230,167,122,219,207,8,186,27,24,37,147,93,187,148,62,178,213,210,105,9,238,26,30,174,118,65,168,123,173,16,237,60,56,21,225,59,100,199,143,213,62,2,115,203,180,187,145,40,160,235,19,219,37,217,94,241,178,109,110,147,136,17,242,184,230,64,229,71,57,177,121,19,181,90,173,135,64,235,229,186,178,96,172,111,54,1,230,78,226,10,4,174,116,51,223,105,183,56,141,174,175,219,118,117,238,61,87,171,227,130,101,164,251,107,110,224,107,195,221,133,90,187,49,77,140,207,163,155,229,210,230,236,74, -200,82,103,103,153,220,214,146,68,129,85,149,240,87,49,248,35,218,199,136,184,197,35,12,83,214,88,160,88,150,59,50,70,187,69,248,81,30,0,234,54,153,221,20,42,237,194,122,169,246,84,194,198,250,243,20,58,188,84,142,213,28,245,216,207,72,203,35,47,178,20,5,65,108,242,201,36,4,164,28,107,196,255,28,53,105,19,205,72,55,185,71,129,98,195,235,35,3,195,91,244,251,145,66,103,190,62,233,99,97,85,34,106,5,119,84,146,160,126,3,230,7,50,238,90,92,134,176,84,86,37,158,80,134,230,146,108,113,239,142,194,71,253,86,180,101,57,5,107,171,3,130,166,253,16,108,44,233,79,141,9,245,89,205,186,57,193,147,238,251,98,187,62,219,214,231,3,7,218,118,80,148,221,231,66,80,4,246,0,11,41,35,9,114,149,6,157,250,13,6,114,65,24,30,90,57,213,39,40,9,238,46,244,214,13,116,46,114,121,87,44,126,64,12,58,195,0,13,19,10,128,217,143,19,72,113,97,116,165,80,8,58,208,35,155,20,71,23,105,48,9,120,191,229,103,97, -194,240,58,19,157,33,114,16,195,66,51,209,201,161,138,184,193,104,200,21,48,198,48,212,32,112,96,210,135,209,147,153,145,47,245,239,249,46,201,49,27,248,9,54,103,42,233,84,49,153,4,140,183,150,101,251,185,219,94,242,88,2,115,8,150,149,37,73,62,59,131,123,14,83,216,119,147,65,168,11,123,232,184,245,41,116,14,126,69,144,57,21,59,116,180,254,102,153,41,24,63,42,236,69,224,38,119,9,179,149,98,243,111,209,33,186,20,197,187,68,77,191,49,18,185,217,10,122,244,183,174,123,231,53,110,165,218,62,194,129,212,229,155,242,81,172,80,48,16,28,170,200,37,84,61,40,76,17,66,99,220,238,44,234,156,240,185,76,175,29,58,242,160,21,142,227,120,68,14,2,220,58,164,52,187,98,57,39,202,210,206,141,54,216,53,20,2,13,81,148,164,235,64,49,5,3,155,29,21,8,128,136,10,57,133,75,4,160,193,236,35,3,16,237,116,2,154,28,26,9,171,69,75,12,30,55,3,97,187,19,102,109,117,177,137,234,177,2,175,26,116,104,45,166,137,252, -67,53,152,40,172,135,128,8,160,141,180,79,178,7,10,199,136,60,6,132,241,200,142,227,245,112,22,224,104,155,108,3,11,189,183,179,71,192,190,76,151,177,167,193,155,14,179,79,111,108,188,71,88,143,240,135,247,127,57,57,222,202,33,40,57,193,134,225,149,74,92,239,146,96,241,239,230,48,137,153,219,242,117,208,37,206,47,148,102,219,57,150,196,89,160,15,35,19,16,3,61,46,164,83,159,168,249,41,114,59,252,231,40,54,151,117,19,255,28,87,241,93,214,66,180,162,59,215,72,108,35,78,104,33,254,65,210,201,173,89,97,236,64,13,79,211,173,13,17,162,254,68,137,4,227,202,52,119,122,236,90,107,51,74,5,79,236,220,31,221,211,230,91,176,60,12,205,142,64,251,92,19,107,151,232,177,227,214,227,100,174,78,34,139,113,52,15,15,78,116,150,173,28,228,16,210,30,50,78,219,87,218,125,176,215,4,65,64,179,193,132,130,208,254,89,215,218,216,4,157,24,35,108,129,176,196,31,8,47,227,67,172,2,221,131,50,50,131,56,91,24,250,115,20,101,133, -135,13,243,99,102,50,66,48,149,16,5,145,209,41,205,53,218,158,132,117,163,52,161,91,54,165,104,172,154,224,100,168,162,194,16,16,14,148,157,66,45,152,185,143,54,197,98,210,161,118,175,118,1,135,177,137,41,14,150,252,142,192,26,209,136,155,93,93,144,160,8,59,123,207,34,113,182,177,55,1,132,251,77,171,184,231,158,45,53,210,142,19,204,72,163,222,222,97,118,213,251,4,36,116,144,115,227,55,45,204,128,121,221,231,254,127,187,37,154,31,237,75,166,66,129,16,249,58,11,129,172,220,49,123,45,4,145,179,131,251,39,4,155,48,19,6,226,255,122,7,25,157,128,93,117,183,196,165,109,26,180,97,109,200,126,176,182,245,195,113,184,68,52,71,103,209,41,59,252,198,203,88,110,194,112,41,60,167,77,44,176,178,69,184,42,123,68,40,197,161,128,78,128,148,200,127,143,135,199,110,105,82,129,188,145,85,199,67,208,134,52,166,215,165,64,251,22,40,247,247,4,245,20,21,156,48,133,101,80,24,4,193,34,33,214,189,112,9,17,46,81,40,4,3,131,73, -144,111,139,67,3,80,166,161,212,9,23,66,207,219,252,225,58,124,78,215,34,19,17,59,57,38,131,171,13,177,62,194,142,12,76,62,77,83,191,16,76,92,126,255,57,214,205,126,118,222,134,98,150,130,210,167,27,164,241,76,166,175,206,163,163,163,223,121,177,5,177,252,238,43,131,254,187,145,180,180,116,170,55,255,98,111,7,47,251,1,193,196,45,67,106,239,30,16,186,235,32,125,146,100,149,238,83,250,173,151,191,64,234,227,31,166,41,10,252,54,86,18,213,0,152,48,102,178,198,245,240,158,187,182,70,16,132,40,72,6,194,79,127,234,253,109,181,42,165,117,217,99,169,90,165,9,145,64,147,50,104,208,127,129,60,189,248,63,154,249,208,98,79,51,152,58,53,7,162,135,199,205,43,192,197,60,212,174,111,15,169,253,5,110,245,58,106,72,36,0,96,31,42,120,100,224,145,116,235,42,65,210,49,194,84,171,141,239,100,234,211,189,194,42,8,133,11,189,82,60,9,1,61,194,166,159,24,47,35,96,115,158,115,182,52,207,243,131,107,79,97,80,207,6,201,12, -219,167,170,85,243,212,15,224,54,46,86,149,155,34,170,235,250,130,236,218,137,123,253,14,158,237,175,68,66,53,254,189,229,23,57,169,206,116,42,232,10,80,76,117,232,221,182,191,83,161,124,196,89,203,29,207,49,92,61,169,78,39,102,14,21,162,103,132,97,36,7,186,235,239,46,164,203,195,143,69,100,84,123,92,14,201,147,165,215,226,107,194,107,226,204,213,81,64,86,155,237,77,109,110,206,155,184,154,11,106,221,27,156,236,83,173,189,109,99,76,51,167,175,210,38,205,211,196,155,57,165,178,133,52,232,180,58,91,46,14,9,30,181,237,79,86,202,243,216,191,50,174,110,154,184,41,80,98,86,212,135,81,131,112,15,118,190,231,6,5,61,157,109,80,97,41,145,48,213,16,21,37,69,68,69,27,28,16,46,98,52,253,37,186,126,234,180,145,138,136,148,25,250,37,159,220,25,221,113,97,136,125,66,147,93,147,79,114,152,15,34,107,154,146,82,20,31,141,76,148,119,33,29,15,86,6,227,104,132,131,154,168,80,172,156,135,250,192,215,197,18,6,99,147,206,179, -157,173,244,206,59,173,148,35,231,113,208,251,181,105,252,159,130,254,170,28,10,106,143,255,56,142,128,49,194,101,243,83,248,217,185,214,29,126,224,151,198,248,255,131,87,242,255,54,163,183,113,116,255,16,27,80,216,196,45,28,186,174,207,69,45,80,35,104,105,99,243,142,242,184,84,34,91,2,89,108,194,8,242,68,153,41,28,241,128,51,211,97,51,150,220,63,79,101,22,191,120,145,43,34,101,183,53,105,81,172,159,216,203,186,0,157,130,163,3,126,6,210,127,0,197,99,153,253,171,111,210,107,176,67,220,204,10,150,249,235,108,139,231,195,149,50,191,28,207,53,221,255,107,39,201,214,25,228,138,95,36,42,9,232,96,23,192,66,96,3,143,203,126,90,36,19,214,38,182,179,220,122,238,230,29,241,138,220,242,177,211,68,223,227,209,219,168,70,35,185,98,182,158,207,112,152,206,196,98,105,130,135,15,194,81,227,66,47,249,11,125,148,129,51,40,131,132,227,193,218,34,152,219,236,20,232,134,81,50,33,63,99,16,190,112,251,97,250,95,161,146,249,140,110,148,219, -129,138,69,50,29,166,25,34,68,81,129,194,103,158,116,161,127,207,70,188,195,99,133,148,127,158,104,38,13,68,90,60,250,206,31,212,91,1,12,233,115,227,112,82,178,71,215,32,207,91,49,191,164,232,202,56,155,28,20,77,115,180,184,149,22,129,173,70,8,149,183,179,188,69,57,91,255,101,164,246,63,61,238,160,104,27,119,169,54,138,138,120,228,164,248,98,169,158,58,252,137,91,159,178,235,98,174,18,37,167,80,184,110,104,90,19,247,249,61,237,144,135,46,143,200,126,87,16,65,20,250,63,160,56,48,224,35,19,40,62,207,183,147,212,252,138,200,127,255,161,97,221,246,77,106,93,68,8,105,176,104,44,247,39,17,47,90,238,84,88,116,15,137,31,166,33,63,60,14,189,143,214,44,31,2,36,92,61,62,8,247,126,89,153,44,236,139,215,254,230,244,249,74,23,36,193,249,116,164,180,8,246,36,52,14,27,160,73,24,40,32,181,7,192,84,123,192,15,144,166,230,115,134,116,111,80,227,100,74,102,147,28,218,142,156,206,55,216,179,0,225,183,101,83,177,244, -81,110,241,163,10,227,22,72,65,211,205,20,88,113,77,236,133,246,16,12,101,42,71,197,190,84,223,238,68,225,83,153,199,135,23,248,199,204,182,125,98,252,17,185,59,245,91,137,80,252,64,63,128,108,206,185,21,239,86,226,243,169,173,15,230,107,15,239,189,50,118,174,252,59,169,14,214,50,87,139,106,251,72,144,221,93,225,200,90,111,30,35,127,146,104,234,72,211,46,77,232,103,157,123,193,179,203,193,40,161,31,232,245,122,183,247,241,245,178,185,190,46,157,231,85,226,246,172,62,121,173,50,80,174,5,80,236,214,187,211,29,206,99,200,236,183,177,147,243,40,52,203,180,205,9,44,175,77,130,181,164,197,143,5,42,147,60,17,168,94,186,54,177,183,143,252,91,234,45,225,98,31,197,143,234,246,185,23,94,8,176,85,121,82,152,238,199,118,252,191,0,236,183,131,131,188,65,168,32,171,16,32,99,18,181,182,105,138,116,237,242,93,156,37,210,30,131,229,173,233,250,143,82,227,113,17,161,56,89,159,149,182,63,227,191,43,216,16,34,68,18,178,220,142,51,22, -10,81,168,93,90,110,44,64,212,84,85,231,207,16,75,185,27,197,2,53,69,68,128,100,55,94,118,230,77,209,191,203,190,190,59,180,18,25,104,251,21,205,229,40,190,136,155,40,187,103,136,174,105,144,35,169,238,53,238,54,85,63,245,1,175,28,223,173,207,229,121,247,4,173,175,221,184,9,117,195,165,63,208,161,21,8,69,242,19,36,54,208,71,214,142,60,187,245,244,222,7,249,176,70,156,43,14,252,227,105,223,201,38,104,128,249,208,126,91,152,26,169,210,78,135,55,161,255,19,199,75,26,44,246,95,35,29,50,184,98,18,72,40,6,96,12,21,49,134,186,67,130,176,231,188,64,140,125,62,131,227,233,118,186,159,151,143,220,116,19,186,255,173,157,8,89,226,216,131,147,124,214,92,24,36,68,64,140,34,184,221,1,129,129,185,37,82,121,208,236,97,24,4,34,219,177,121,51,109,212,24,110,18,111,13,100,92,8,172,112,222,108,8,14,14,183,80,205,137,194,101,227,90,18,162,73,157,90,221,210,101,218,28,17,54,75,225,231,140,188,188,97,229,121,214,25, -230,14,151,82,84,168,202,53,95,172,84,104,156,52,51,249,0,31,146,164,144,196,240,31,157,99,61,138,65,191,147,203,216,231,253,189,34,245,123,71,78,229,36,134,136,169,134,214,134,77,246,200,166,106,116,127,190,195,236,144,61,85,85,95,143,174,103,178,50,7,127,232,162,85,95,247,185,211,79,122,156,88,106,196,185,50,174,114,253,149,216,43,215,188,187,84,201,53,188,57,23,61,223,100,99,85,230,152,133,59,206,148,77,176,253,102,213,217,23,130,177,152,252,169,194,72,219,180,70,136,233,220,220,162,109,126,241,99,165,216,59,182,207,205,91,165,201,204,39,25,28,209,49,11,44,2,135,62,13,170,20,130,30,50,107,46,33,194,194,17,11,201,48,27,10,18,68,162,100,205,195,175,106,140,161,34,15,48,187,92,67,2,217,111,233,153,156,237,41,32,132,195,184,201,114,78,133,209,114,156,231,51,182,30,174,34,3,38,114,16,202,50,200,88,127,193,53,4,113,56,216,32,85,42,230,248,50,181,169,220,128,119,1,162,16,149,130,212,51,238,219,159,235,118,176,133, -126,63,41,189,87,253,172,201,199,172,199,209,15,138,52,186,208,43,9,87,45,162,220,147,161,126,132,155,85,73,118,140,15,251,28,250,94,207,250,123,142,145,183,188,227,136,69,67,23,24,0,33,31,138,242,236,108,135,181,195,206,170,35,81,2,211,205,22,110,156,220,185,13,56,151,119,72,161,205,233,242,73,40,158,94,119,122,181,82,156,216,27,173,241,25,94,36,255,201,239,212,31,209,11,78,100,220,63,110,92,138,249,3,44,132,72,126,125,44,198,31,85,27,231,223,233,20,37,220,206,143,135,246,108,215,235,136,179,173,190,39,203,65,226,159,172,31,8,52,133,228,50,133,212,204,125,14,97,32,121,144,2,87,28,59,190,106,104,252,46,77,170,5,89,212,122,214,2,97,241,144,55,175,34,88,179,86,126,17,123,203,167,173,103,183,108,136,236,185,202,166,132,182,100,243,150,112,229,172,223,190,137,78,172,34,208,151,159,150,198,44,227,157,239,136,254,2,15,187,29,91,80,195,162,32,187,241,13,242,27,215,219,235,181,9,254,158,163,191,37,117,235,22,155,82,137, -150,104,88,182,4,250,45,23,141,98,19,6,128,105,116,63,56,221,231,162,64,121,96,159,2,42,226,228,146,129,154,159,159,221,235,139,230,249,238,138,174,215,233,19,121,63,239,199,173,211,213,117,229,200,218,225,202,188,88,107,6,231,61,210,189,103,154,114,101,198,144,255,125,151,207,98,235,68,237,179,233,157,129,42,246,178,225,239,154,178,141,98,91,191,12,182,227,78,178,44,153,186,197,71,53,186,83,0,9,97,213,105,3,77,157,69,8,52,190,53,208,120,207,92,109,178,201,56,184,193,96,96,82,152,140,15,88,248,134,9,74,240,83,47,15,212,153,180,189,237,70,5,105,9,30,177,184,9,16,112,201,181,207,50,137,66,37,81,130,161,122,129,147,228,56,200,64,168,35,199,208,228,176,180,34,200,20,116,191,63,252,165,238,176,71,220,139,101,13,93,30,224,198,107,233,144,117,226,10,57,235,197,94,131,36,128,220,237,13,215,50,214,188,223,133,31,76,73,175,111,152,136,179,4,73,31,11,104,8,211,100,194,17,15,222,217,89,161,89,216,196,105,40,32,36,21, -44,83,189,158,136,207,43,158,75,205,46,173,89,43,182,141,249,26,23,133,72,47,86,128,65,40,4,4,214,127,244,145,32,28,28,208,173,96,115,209,149,194,137,116,249,254,2,51,49,114,161,53,10,139,9,218,219,123,58,71,18,255,35,68,146,72,210,106,131,239,170,44,104,40,251,69,209,209,236,201,105,244,95,30,142,116,121,43,95,147,242,229,184,74,210,232,118,73,157,232,184,113,42,167,108,75,156,220,155,158,170,151,215,125,191,247,30,139,239,242,148,165,74,3,214,79,137,44,10,191,27,112,42,228,110,158,107,75,58,146,204,62,73,79,50,69,96,240,207,56,37,67,214,23,72,182,47,121,187,243,43,65,143,81,219,187,247,119,189,73,56,55,75,164,227,190,123,58,170,155,126,207,166,40,148,26,235,187,122,218,171,61,101,48,9,74,177,249,11,115,66,213,107,239,28,177,35,147,153,109,254,34,23,189,28,4,75,14,50,15,0,49,206,205,204,253,91,25,61,58,129,233,237,157,59,157,120,189,26,197,106,167,172,22,42,216,96,105,52,180,110,200,138,231,92,21, -107,141,71,253,174,56,93,61,189,59,18,251,28,141,30,223,183,122,186,170,201,99,219,26,241,153,122,27,125,189,219,36,145,185,102,171,210,70,40,222,143,194,73,141,169,203,87,113,223,70,48,152,58,85,90,231,206,148,183,150,193,228,99,31,95,3,30,47,201,224,173,29,169,22,102,77,7,215,24,16,72,56,133,92,143,48,24,106,72,143,225,2,139,112,31,185,156,34,125,65,6,44,157,165,209,123,52,244,216,208,39,211,90,195,245,45,74,193,194,137,73,6,78,77,114,17,90,16,19,5,239,105,146,244,191,21,81,73,157,129,242,88,81,32,112,27,58,0,118,140,228,32,252,28,84,53,252,241,78,93,231,181,11,244,48,19,198,182,41,40,35,118,136,103,241,117,104,101,121,16,32,1,49,6,151,219,40,57,64,129,214,75,84,253,56,107,62,216,162,90,27,118,101,197,62,57,181,16,79,208,220,231,143,217,77,3,15,89,42,22,240,99,118,144,67,127,189,191,14,248,6,8,190,140,220,198,110,39,118,240,196,143,233,191,200,169,89,42,27,79,22,100,98,133,0,25, -12,204,139,1,182,155,40,167,17,195,149,105,177,181,88,39,6,93,153,171,157,239,59,64,127,34,68,154,176,40,174,231,51,100,109,234,172,169,37,142,65,125,178,211,93,15,76,193,220,177,207,248,151,198,221,70,100,19,36,97,179,148,33,131,62,237,194,155,145,137,181,243,114,63,105,87,226,155,99,175,129,83,103,34,239,220,149,58,14,100,60,150,71,110,77,155,53,48,55,158,71,64,80,150,157,14,18,195,93,14,225,30,122,56,69,101,52,243,63,83,224,169,48,168,45,246,3,135,63,7,53,199,200,50,21,146,241,183,136,37,26,15,37,46,45,31,228,243,235,221,173,156,27,246,220,51,228,85,248,232,72,234,68,186,126,17,133,88,211,18,236,100,135,45,147,30,237,221,187,94,144,42,95,245,89,18,247,145,199,171,227,20,31,2,153,65,79,112,169,88,14,189,64,162,38,193,79,186,145,146,95,58,118,205,156,30,94,163,213,168,150,102,217,45,28,18,231,102,207,3,173,115,142,135,244,110,211,249,235,68,125,239,78,178,215,96,115,221,164,91,64,216,234,226,149,224, -78,243,104,201,160,182,232,190,146,27,38,5,173,253,36,82,24,15,184,52,97,77,205,216,161,221,155,105,179,187,101,57,173,228,230,122,51,221,67,115,126,181,62,128,245,251,79,35,45,199,47,10,210,31,131,197,28,8,42,218,95,244,56,235,253,234,182,23,192,109,70,137,76,133,108,153,236,52,13,179,61,80,225,23,189,101,80,185,63,64,48,81,72,255,95,204,84,83,113,23,252,51,12,121,88,101,150,20,117,189,48,57,200,162,131,12,8,201,236,59,85,47,155,96,118,47,219,248,7,72,144,247,166,153,227,103,72,192,61,235,71,8,151,164,94,187,84,148,127,113,51,191,103,18,94,68,224,5,135,21,124,58,93,69,147,141,184,197,12,76,80,131,81,106,196,59,84,69,89,254,169,147,197,82,55,131,18,70,209,37,217,107,163,31,250,112,187,94,123,175,235,189,16,124,143,132,141,120,39,253,117,122,49,78,55,47,107,206,115,127,249,62,233,241,206,133,26,183,96,30,197,18,119,200,187,191,178,94,101,246,232,254,49,239,54,64,190,241,96,88,31,51,246,28,164,137, -19,31,153,86,48,114,225,3,77,246,68,95,216,52,201,138,159,202,86,168,51,149,121,6,237,90,61,205,219,107,229,96,214,46,173,250,178,198,211,158,70,116,138,245,246,35,16,232,43,234,90,172,119,252,1,123,157,138,33,211,130,47,180,129,159,69,129,79,24,219,77,226,28,24,35,214,98,12,17,203,24,103,7,203,132,108,148,218,180,100,248,73,57,104,254,95,55,77,57,140,92,116,13,176,130,216,132,185,104,179,130,226,10,161,76,26,223,168,201,59,130,235,225,57,255,162,136,242,219,235,149,208,93,27,119,118,151,151,107,124,168,23,164,199,226,25,103,68,10,226,163,130,23,99,109,221,235,245,252,201,115,9,155,193,160,44,242,3,29,159,254,139,76,16,116,240,175,136,143,124,170,122,140,13,246,137,193,6,91,230,170,78,251,123,202,208,86,186,119,125,197,115,169,219,29,91,46,240,103,236,190,191,135,246,247,195,248,190,54,79,158,124,247,216,249,188,94,173,199,105,123,58,211,230,94,229,82,147,185,216,38,59,67,156,100,211,93,7,91,62,46,116,108,155,23,91, -149,174,117,216,166,191,75,87,47,64,137,95,170,199,166,86,91,169,210,131,236,228,116,204,167,59,216,107,8,210,16,10,14,103,115,177,143,242,181,67,28,27,56,49,221,67,65,66,70,57,196,219,200,51,117,81,224,195,213,217,219,90,194,159,54,122,101,247,148,136,181,73,232,33,161,131,234,159,168,122,184,69,188,83,63,128,16,229,146,162,64,162,195,74,145,17,223,255,200,169,145,144,133,199,168,39,150,234,62,43,97,67,105,217,234,216,32,215,164,73,92,112,139,140,8,75,213,108,8,74,138,186,241,206,103,239,231,159,165,24,151,246,222,53,245,140,182,183,43,170,68,184,188,197,156,3,78,117,222,244,86,23,14,231,160,16,149,163,232,254,94,6,35,75,230,149,190,96,235,199,251,111,33,77,142,207,205,102,100,191,74,4,235,39,192,32,147,240,3,232,192,15,250,7,2,189,243,43,114,68,84,65,59,61,244,203,130,192,177,210,246,216,104,96,231,196,13,24,78,136,160,145,152,209,33,19,83,144,169,96,9,63,110,54,28,145,209,11,209,4,254,194,165,127,83,169, -123,87,11,62,46,173,92,70,195,186,202,229,15,172,202,74,28,45,180,160,119,199,243,90,35,38,14,228,19,82,239,221,106,76,166,100,83,199,95,217,53,239,43,12,158,207,131,7,93,120,3,29,153,138,243,217,85,62,76,223,164,149,254,213,96,23,116,25,2,188,59,139,30,56,155,43,20,91,167,206,56,231,191,177,88,233,4,115,71,145,163,155,3,38,120,66,107,187,206,118,247,133,254,54,61,141,13,254,187,53,180,4,233,81,163,237,236,241,74,145,95,174,96,243,78,108,9,151,231,246,212,148,180,184,158,203,150,105,145,27,92,145,14,68,185,201,53,190,42,97,171,93,23,152,223,198,14,83,48,114,92,98,235,184,123,95,183,34,85,141,218,120,82,147,222,1,132,204,189,82,18,126,17,146,153,112,39,174,105,131,214,127,1,149,50,190,93,246,207,250,139,255,252,201,222,171,143,253,44,240,109,62,167,235,251,224,218,17,106,207,163,106,59,180,27,53,113,155,65,194,35,45,65,44,206,110,61,158,73,17,220,130,150,201,223,242,78,51,240,44,90,110,22,166,48,57, -120,218,88,165,56,27,104,141,108,98,208,201,152,27,151,110,242,113,209,234,30,203,1,192,124,140,240,162,143,186,228,97,57,96,44,78,37,184,230,217,34,253,147,211,23,232,191,205,0,207,12,120,45,170,218,114,209,230,59,15,188,157,169,172,107,27,15,220,147,9,214,246,155,203,18,107,230,16,148,236,112,116,26,228,185,15,0,125,36,154,181,54,36,102,20,209,197,237,191,128,246,162,210,188,13,132,189,50,49,124,145,74,194,36,162,199,81,182,55,160,233,97,145,201,51,87,122,97,71,123,98,72,227,188,238,33,207,163,51,202,100,1,13,181,13,120,153,200,132,25,204,85,74,64,16,101,10,241,99,69,170,5,41,138,156,197,139,200,169,123,145,79,47,40,180,118,59,129,75,240,238,142,91,72,55,234,35,230,130,2,98,24,234,204,124,106,33,251,237,221,180,114,98,116,208,189,46,243,180,16,4,142,215,252,80,48,251,145,96,6,140,43,248,49,13,130,81,37,131,202,66,57,102,18,28,190,196,70,16,10,217,232,47,163,200,200,245,146,125,247,44,54,194,17,77,224, -44,153,6,201,129,147,241,165,81,174,158,136,91,22,228,249,241,173,102,175,209,129,38,117,141,109,90,171,140,92,111,245,116,47,138,249,188,248,84,131,157,234,237,134,168,178,166,162,255,216,198,167,215,186,255,9,44,56,148,91,43,56,98,169,24,79,255,253,115,202,133,17,154,82,119,26,156,243,170,104,225,129,125,82,31,211,252,148,220,221,44,185,57,116,250,238,135,220,156,171,18,58,180,4,229,173,143,190,184,174,46,190,32,23,82,125,31,222,142,93,54,200,56,223,10,196,153,181,237,219,58,71,50,143,42,176,41,172,114,77,228,238,247,223,93,186,233,96,152,23,232,116,183,205,254,239,57,112,248,92,79,179,121,135,68,206,250,123,194,181,52,147,186,126,54,34,37,250,225,208,182,133,150,53,121,53,170,115,114,85,104,188,150,130,122,50,215,217,185,120,235,180,122,124,55,65,176,13,9,186,242,175,239,237,124,221,93,219,239,238,53,184,149,136,49,59,98,151,44,253,164,57,30,189,206,162,104,195,126,32,28,24,141,92,225,220,132,41,200,113,201,179,45,11,196,197, -185,171,104,74,50,207,138,191,213,106,177,116,208,248,50,9,81,10,173,246,244,207,25,98,4,2,50,224,101,230,49,49,35,116,87,127,252,73,220,20,145,3,174,62,246,80,202,181,95,3,15,235,130,239,146,186,251,60,67,227,232,22,173,63,36,207,181,185,113,176,1,129,77,209,108,175,188,210,32,107,15,87,174,18,4,235,114,27,107,219,26,237,56,47,202,216,70,160,169,197,186,168,145,137,42,152,157,61,44,47,234,59,0,67,89,101,5,205,34,10,141,150,14,144,250,64,56,141,223,142,51,25,67,90,212,226,125,207,234,177,124,127,177,177,190,134,150,134,255,119,7,208,144,72,82,138,230,197,202,100,46,217,79,38,37,210,218,31,37,77,68,246,40,226,214,76,87,204,181,246,51,40,141,220,76,108,137,59,215,255,183,165,43,231,127,182,100,108,164,39,194,228,68,202,24,151,28,178,33,211,232,21,230,92,132,109,203,49,137,14,101,224,6,98,202,225,49,71,3,62,254,201,135,111,225,48,1,105,144,76,255,192,121,149,116,181,68,88,192,201,7,66,75,2,70,3, -1,194,61,14,236,7,81,24,122,16,113,212,57,131,15,4,169,4,71,46,28,58,245,197,72,98,54,173,227,57,48,207,193,138,95,190,40,123,236,91,190,205,109,78,29,74,88,193,186,199,190,120,145,103,241,232,145,97,243,208,218,151,22,19,188,12,206,180,42,74,127,71,57,145,132,198,21,167,178,154,240,74,210,201,73,65,171,158,18,27,151,212,7,228,155,81,223,110,125,206,15,175,19,192,179,212,223,171,195,103,228,204,239,196,146,16,116,153,103,72,199,212,127,85,197,168,152,219,158,14,102,221,150,95,170,83,146,188,46,9,160,153,238,56,202,189,135,39,135,219,167,185,230,174,113,137,252,120,9,222,10,132,218,230,91,233,18,174,174,145,231,238,252,187,18,106,121,68,141,215,123,57,175,197,32,70,220,225,77,148,54,237,99,59,181,157,206,38,35,145,70,124,151,93,189,94,193,138,62,250,220,8,159,55,242,250,222,25,223,213,174,229,251,158,229,35,223,247,228,122,132,174,145,85,173,139,249,118,45,177,202,187,93,162,35,239,119,102,37,134,107,188,185,190,89,85, -80,234,235,87,103,199,54,43,32,62,14,38,245,202,58,38,212,108,94,115,185,241,168,178,54,116,147,9,214,25,173,205,236,0,58,142,29,238,224,7,254,109,74,215,29,146,193,162,29,187,78,117,28,77,119,126,170,76,84,117,182,161,57,162,248,9,23,10,106,202,87,109,240,147,218,131,148,237,198,113,182,0,17,14,218,151,224,166,227,192,205,255,35,98,45,253,92,25,63,49,62,216,4,101,181,70,222,2,98,218,99,221,196,87,176,16,209,170,170,101,23,170,92,105,183,212,253,0,96,134,66,131,65,0,44,137,106,216,51,201,77,8,183,93,34,39,122,57,101,36,189,49,31,109,7,233,133,129,31,193,31,64,92,204,89,14,202,32,162,222,98,204,55,74,129,119,59,109,50,147,166,232,229,166,200,151,251,181,245,89,61,239,245,231,68,217,64,4,127,226,135,18,9,51,176,24,211,189,58,23,185,41,41,97,234,106,68,111,155,141,218,68,150,187,194,184,96,3,92,102,52,228,54,40,41,86,83,55,13,34,153,12,74,32,26,221,255,192,195,240,166,103,43,151,51,25, -253,45,238,23,3,221,62,215,251,37,98,75,9,113,252,164,108,135,62,95,202,111,0,177,177,111,248,117,120,213,137,52,190,174,27,199,74,174,70,126,138,126,227,155,192,118,75,60,110,13,243,107,42,58,21,110,107,21,123,190,16,36,241,33,216,41,145,219,5,149,59,238,249,212,209,80,254,192,153,180,97,176,128,173,72,108,158,211,236,91,252,72,5,185,63,222,65,44,224,147,178,181,86,248,32,94,231,20,104,197,246,58,6,93,132,174,175,241,141,134,206,10,140,87,150,155,15,28,210,231,58,99,251,157,16,136,193,201,162,224,118,39,24,177,82,99,50,248,120,123,160,246,60,123,77,141,160,195,235,73,193,21,84,82,146,254,231,3,42,49,159,216,159,2,31,15,129,128,215,218,21,156,189,219,133,250,115,70,108,202,251,101,84,235,223,39,225,123,82,189,223,139,243,163,212,90,231,118,59,147,192,167,253,206,190,187,213,247,28,219,246,190,159,250,235,224,154,119,182,173,213,203,224,236,230,180,215,218,175,47,217,137,16,215,250,220,90,15,157,41,15,39,159,207,171,21, -108,186,115,6,114,211,82,5,23,238,203,37,117,116,29,218,139,212,198,92,166,114,192,153,63,51,63,164,0,129,233,128,31,64,177,65,192,61,74,255,189,253,189,172,140,10,205,221,74,127,55,155,98,137,33,242,186,80,231,134,46,117,206,210,214,151,32,122,221,199,242,115,186,91,148,33,224,193,72,124,155,10,70,26,139,221,161,247,97,105,28,173,24,130,91,208,2,228,213,132,69,157,47,251,147,158,5,185,165,181,171,46,23,239,49,254,181,221,157,41,155,218,158,186,253,27,184,19,226,34,20,115,64,168,58,186,96,97,248,224,166,133,213,120,111,19,8,227,81,57,240,137,14,35,173,209,155,184,12,12,95,63,251,65,124,162,108,149,237,248,208,59,84,18,4,18,40,49,100,98,137,199,187,210,159,34,46,139,9,207,254,39,39,15,251,127,114,18,128,255,196,77,18,222,97,196,111,100,22,129,225,19,252,117,137,22,79,199,34,139,185,94,194,118,89,235,184,113,91,163,78,180,137,25,101,131,240,44,194,212,97,101,210,250,132,36,36,168,21,243,134,139,163,71,94,85, -135,113,125,140,45,18,121,150,66,72,125,95,38,32,110,220,202,109,198,250,184,58,35,194,205,6,225,37,234,195,60,216,201,116,77,230,230,66,121,8,114,71,167,108,202,186,102,26,251,67,228,56,162,93,248,233,38,33,198,26,250,49,63,69,96,20,156,123,197,156,85,111,187,87,243,116,238,91,17,205,132,237,79,151,104,150,49,212,213,228,94,45,138,40,27,119,49,142,158,63,16,178,243,103,26,60,132,189,19,14,110,40,60,106,184,187,159,73,127,79,39,8,33,249,128,11,127,252,10,191,240,128,19,255,124,110,247,126,30,65,112,47,73,246,31,242,80,79,52,237,63,76,94,61,64,33,30,75,121,248,110,249,178,56,220,90,221,87,79,93,149,166,47,225,135,191,171,124,52,85,79,178,90,110,146,151,7,113,84,142,38,201,170,37,199,187,230,125,61,216,175,251,101,243,169,237,146,2,223,87,253,57,95,51,223,87,77,244,169,9,84,223,183,64,116,91,93,19,196,222,199,181,235,206,107,177,201,239,98,112,113,51,46,53,234,224,59,249,14,64,237,245,237,54,155,61, -239,15,150,229,117,51,255,186,231,206,141,124,138,30,178,87,226,149,221,118,138,244,84,251,22,190,190,171,88,85,126,77,13,123,215,97,227,117,130,91,242,167,81,24,198,230,124,40,88,172,153,91,60,167,197,250,99,174,235,68,249,89,161,74,176,98,148,61,140,85,119,66,32,190,166,27,50,247,224,29,179,222,4,93,15,109,28,26,100,63,176,128,224,10,128,208,192,89,11,197,237,215,187,143,61,189,223,13,199,203,171,173,133,245,230,226,140,119,109,31,158,119,222,238,44,170,222,150,107,122,88,163,216,19,254,21,150,122,191,27,52,54,120,96,161,66,18,241,220,86,65,78,254,97,227,117,88,177,32,18,178,23,189,74,126,146,80,8,217,203,228,94,236,157,79,191,57,172,125,36,74,24,134,162,166,147,95,28,153,124,3,190,130,255,129,61,167,243,63,176,79,134,59,18,80,199,207,214,247,225,40,147,164,136,145,161,75,177,43,95,230,50,151,180,158,130,22,189,156,103,45,71,167,85,238,76,160,55,90,216,116,224,20,97,57,192,60,236,160,229,70,249,22,7,236,134, -93,228,114,182,185,227,183,227,253,246,230,188,125,52,28,43,1,219,191,75,14,91,173,156,54,249,106,52,17,215,247,110,130,175,150,71,41,204,225,182,116,50,13,188,200,230,65,214,171,71,62,225,14,160,152,60,167,87,202,245,196,73,241,11,157,115,162,194,63,71,18,139,31,197,249,73,18,158,242,150,118,213,120,15,68,104,214,154,237,85,161,136,157,156,76,238,130,108,232,124,127,121,101,176,156,222,131,178,65,64,34,44,80,36,251,0,87,247,202,162,207,30,40,79,72,200,50,215,6,31,238,253,231,244,132,9,237,3,218,3,243,28,102,114,62,26,130,250,13,58,123,55,246,205,241,211,233,37,174,250,89,151,168,159,93,245,244,188,243,44,16,48,98,207,138,244,91,100,127,74,85,54,161,249,224,112,238,83,123,235,231,187,71,249,222,241,199,231,131,40,231,63,207,47,241,31,188,149,6,189,208,183,46,114,189,24,223,239,129,119,236,180,58,45,95,141,243,148,223,251,194,247,225,70,236,250,7,252,60,175,79,168,93,110,131,8,97,182,253,211,119,4,158,41,81,95, -99,32,51,149,214,206,116,26,53,84,132,145,138,46,98,187,54,61,185,26,228,237,204,57,172,202,227,151,147,18,163,154,144,178,16,205,117,215,197,129,150,70,243,222,180,152,203,190,10,108,36,92,19,169,185,11,107,49,118,99,123,86,178,226,68,66,194,14,87,176,228,120,50,250,186,111,79,181,163,76,92,17,18,27,143,159,41,36,103,187,126,64,192,240,2,251,91,116,140,197,4,3,152,87,96,108,118,11,170,163,51,59,12,49,252,43,189,129,221,53,40,199,78,206,85,69,30,8,140,203,43,19,123,228,181,216,236,55,134,23,7,241,111,55,144,219,9,118,37,157,152,33,219,23,3,247,160,140,65,9,148,113,13,144,52,252,34,116,231,131,46,9,24,7,115,148,37,121,181,73,200,12,225,216,139,112,255,186,248,127,85,252,252,175,139,255,87,197,7,168,144,128,96,191,212,161,217,24,62,15,133,216,111,144,23,210,227,65,110,23,119,235,85,252,75,209,146,205,21,94,218,126,232,75,177,245,91,6,216,15,17,123,216,93,131,186,145,209,46,244,240,168,65,173,123,171, -33,27,171,214,121,219,135,67,36,90,163,219,170,54,57,6,94,21,218,232,186,223,163,114,20,5,253,109,197,136,88,254,3,16,168,169,39,28,70,154,194,210,69,67,195,74,197,219,215,121,77,0,43,195,17,111,31,212,50,116,70,238,188,139,95,211,4,43,154,55,123,255,186,127,67,88,74,239,43,177,154,167,19,229,231,235,36,7,196,9,123,151,9,0,109,26,92,135,18,125,20,165,62,136,170,184,224,167,1,142,210,64,187,254,110,148,238,95,3,200,185,160,176,246,255,241,5,76,32,188,32,129,124,33,192,184,103,59,166,190,78,95,159,11,158,105,180,253,55,233,70,54,88,194,129,226,126,50,248,116,109,250,63,114,210,87,105,248,46,53,74,111,208,94,97,224,185,95,61,199,247,92,143,241,29,93,51,122,223,219,248,245,125,255,212,15,187,207,250,125,123,191,239,127,194,217,80,46,191,151,196,253,236,112,127,127,185,29,193,79,10,186,231,71,173,70,71,9,234,242,249,185,187,198,145,230,218,246,110,43,207,233,107,25,51,97,162,32,140,36,123,171,86,74,155,146, -133,136,219,80,193,18,50,160,224,45,31,86,110,206,15,56,220,208,11,51,241,26,210,117,170,36,119,13,56,194,77,250,186,88,203,104,178,103,55,39,214,82,22,180,183,113,104,202,110,177,143,175,2,73,32,190,183,154,235,119,71,251,57,248,106,79,103,189,237,110,252,236,140,1,220,126,220,134,107,80,65,38,194,68,210,105,21,203,76,121,229,108,123,139,119,110,124,118,203,68,1,121,39,3,12,237,96,10,123,15,131,145,56,120,89,157,178,32,99,103,110,74,206,137,157,142,94,70,188,149,125,55,213,107,69,239,119,163,121,27,5,52,95,2,54,138,143,249,66,210,227,134,18,133,0,130,230,22,200,16,74,140,144,187,159,222,204,156,56,255,49,187,249,46,145,40,54,241,126,191,183,63,79,253,127,31,45,228,45,175,118,28,113,255,88,218,247,244,220,17,39,236,195,168,104,20,147,238,47,113,107,22,4,205,29,136,224,122,4,106,127,5,116,201,236,56,5,107,24,126,120,164,253,32,137,64,47,34,48,21,69,20,118,92,80,31,17,149,66,217,6,187,251,7,32,4, -37,9,202,22,18,85,237,67,16,40,132,70,108,73,134,165,149,167,48,89,126,185,85,115,69,78,30,226,18,176,50,237,60,95,241,26,252,21,209,72,165,215,58,134,185,206,24,228,42,123,90,231,53,9,176,146,126,226,17,108,190,163,42,223,85,243,185,71,53,99,135,142,99,200,81,33,242,26,38,124,29,140,112,130,202,120,136,76,190,157,223,131,217,142,54,117,42,32,204,47,3,96,18,54,120,79,147,235,117,15,58,222,250,68,133,254,67,7,141,60,160,246,129,111,247,255,123,221,42,156,29,21,83,191,220,2,30,67,127,124,223,27,188,218,50,163,167,86,100,153,74,85,81,45,222,106,149,234,238,29,184,95,68,183,144,157,51,150,239,176,130,239,101,254,121,189,63,33,215,179,207,169,77,213,234,63,199,190,211,209,99,75,21,174,183,243,115,244,220,62,22,64,71,132,152,114,148,49,17,226,244,66,134,103,85,215,253,229,250,220,205,143,207,219,229,239,206,206,107,35,74,90,46,147,91,132,77,99,105,108,108,106,208,25,42,95,69,26,186,33,195,164,193,186,99,241, -15,217,206,68,175,126,52,104,117,234,105,39,108,172,190,179,13,173,13,71,197,149,102,210,40,147,178,5,251,197,26,127,217,143,145,203,219,253,252,243,169,45,17,223,58,231,235,116,245,232,181,71,162,55,86,217,225,154,82,68,243,89,254,105,41,249,232,241,167,178,249,97,126,66,150,149,170,125,242,98,197,165,5,52,11,240,47,113,192,35,146,132,99,107,120,115,146,130,55,146,181,155,147,25,53,79,11,54,110,153,163,105,157,201,12,206,125,115,236,125,35,67,193,95,163,69,13,250,98,105,22,144,0,5,98,34,126,236,198,4,67,36,128,176,13,192,32,184,172,33,23,243,0,49,44,236,105,28,134,62,93,194,255,198,142,62,228,255,198,142,120,197,14,87,255,108,30,204,103,197,231,95,228,67,202,27,47,11,20,194,4,57,40,107,58,83,44,96,222,88,122,3,32,97,102,103,76,151,144,88,170,47,236,239,111,73,167,241,36,238,218,100,199,48,139,48,35,80,185,88,92,68,36,75,170,51,100,104,132,38,120,135,15,36,223,3,153,130,85,185,181,205,11,239,47,182, -33,202,122,131,63,16,42,9,174,194,69,198,113,50,61,78,152,15,74,33,3,49,0,46,73,138,207,59,148,225,188,176,248,90,215,21,42,97,139,198,171,20,65,166,15,144,238,120,17,38,109,125,210,225,156,252,140,159,46,92,78,77,5,249,158,163,63,85,222,84,113,99,16,90,230,67,135,77,13,134,244,5,240,151,209,33,246,25,222,240,206,66,119,250,4,249,58,101,59,3,123,170,123,61,232,109,187,155,169,179,175,241,149,93,13,240,34,159,174,116,151,51,135,38,133,35,47,159,126,84,68,214,118,165,96,250,131,84,250,79,61,182,188,81,111,70,202,192,237,185,251,92,85,223,215,129,115,186,238,130,159,171,126,45,127,110,238,103,139,147,71,71,150,52,107,95,18,105,62,57,49,120,6,242,240,73,188,110,235,31,143,151,206,239,197,119,68,253,4,89,251,11,125,75,235,65,101,57,176,206,46,183,166,187,163,53,53,138,208,175,185,163,169,252,158,131,141,44,3,203,170,130,192,161,135,167,173,143,210,143,191,210,148,59,119,44,228,74,196,100,187,93,208,181,67,232, -77,102,169,87,24,127,49,23,115,190,77,27,226,83,182,182,232,105,246,72,186,177,148,253,75,187,32,37,231,81,67,240,46,85,190,11,209,131,82,99,198,190,180,181,195,84,242,227,62,206,145,108,238,186,112,227,55,163,184,78,96,63,203,245,172,136,164,254,41,104,246,203,72,198,198,81,245,76,79,222,9,26,88,227,127,123,137,195,166,58,183,232,154,249,171,34,218,198,164,232,163,254,159,103,81,89,235,41,239,171,237,93,157,121,137,79,184,224,239,190,194,249,132,178,52,133,116,135,205,76,70,190,44,204,5,73,52,6,31,104,63,24,222,11,117,3,56,0,51,178,155,15,84,241,143,110,251,238,255,105,233,63,41,57,254,105,233,63,41,249,239,164,205,23,231,8,204,194,88,217,231,165,110,235,140,103,49,154,131,47,184,200,151,211,112,166,120,24,214,229,225,1,253,67,123,243,241,103,62,6,161,201,186,84,139,197,54,183,235,18,211,31,255,150,216,254,251,228,206,79,219,70,100,189,70,37,206,12,127,241,32,230,181,146,195,247,77,69,227,57,68,232,239,158,89,115, -251,58,57,66,173,190,248,146,132,196,72,136,238,240,5,241,102,144,134,147,23,228,225,91,196,75,95,48,133,0,82,24,18,45,23,200,112,149,23,101,193,124,161,84,21,61,80,119,130,224,150,61,135,37,156,42,194,216,220,244,7,202,19,87,116,229,102,222,16,18,5,17,225,2,223,81,64,118,183,44,203,207,0,186,100,91,235,197,65,239,206,215,16,118,33,116,150,194,206,118,5,187,189,192,206,90,125,210,23,121,69,22,209,131,105,134,61,126,111,112,207,248,112,73,184,125,188,209,80,75,213,153,32,152,122,195,50,198,204,21,114,251,180,205,144,220,189,157,69,92,216,35,186,129,253,41,145,50,41,19,230,213,96,231,90,195,207,121,107,137,81,14,219,74,225,125,156,119,122,231,69,168,176,120,220,75,185,243,178,171,123,90,130,23,219,141,164,35,22,71,234,239,125,113,94,159,91,247,13,231,154,170,237,24,250,76,87,39,232,106,4,189,150,130,184,195,197,236,93,223,97,56,129,15,154,28,21,220,109,160,76,201,66,236,129,43,253,51,55,154,153,244,12,27,89,203, -176,53,113,28,44,156,154,244,57,205,152,103,59,225,34,50,59,45,94,220,66,83,34,145,12,129,161,168,211,95,157,217,154,224,65,26,27,78,241,61,152,191,95,31,231,103,181,58,233,245,87,179,207,173,235,158,187,116,111,29,134,209,31,74,238,77,188,42,47,72,252,199,160,138,118,46,252,174,104,4,151,226,100,150,33,169,1,192,26,180,169,28,39,8,122,216,79,95,162,12,77,45,82,29,113,80,128,37,31,88,186,11,50,35,207,233,89,31,40,1,183,219,121,114,129,222,239,99,250,251,203,240,101,126,119,49,92,87,30,166,13,109,19,204,140,69,146,134,65,176,65,208,112,246,3,115,47,61,42,196,57,76,134,57,5,6,67,135,246,67,241,241,191,49,101,75,241,191,49,229,152,248,255,99,74,119,160,41,45,9,35,65,28,22,100,58,225,204,55,7,94,47,168,128,98,63,252,178,33,220,36,53,240,203,45,92,242,208,227,27,132,178,174,143,65,168,90,206,69,136,37,27,169,202,57,174,49,153,255,71,122,13,48,120,115,101,250,207,83,53,15,101,234,143,210,52, -107,65,80,105,55,77,135,0,46,60,95,163,178,24,103,5,206,20,133,3,65,132,60,74,226,131,245,227,159,95,14,99,77,55,231,229,120,41,139,39,165,138,193,220,185,208,67,18,223,192,191,120,37,190,71,163,159,72,220,210,32,8,87,210,96,147,50,181,116,72,200,233,0,218,178,174,30,14,142,12,242,103,49,101,214,192,253,64,34,108,101,217,79,229,162,132,33,221,179,23,211,183,163,116,168,240,225,106,98,174,28,90,23,143,18,15,153,139,146,253,82,105,161,157,227,100,222,185,15,249,144,172,98,152,177,1,45,125,74,33,111,100,208,52,187,81,76,14,166,186,187,114,142,12,102,55,19,43,165,134,235,90,182,240,26,99,88,207,30,247,147,142,242,45,183,118,68,178,101,181,97,197,166,198,70,37,28,236,213,223,207,38,26,187,59,39,12,19,31,41,47,15,233,220,33,55,30,79,127,236,127,9,213,71,201,230,106,70,248,147,187,215,214,210,49,88,255,164,195,245,155,52,170,140,17,151,57,104,132,132,189,56,30,42,0,117,56,120,70,159,111,31,11,19,75,53, -91,120,127,209,180,244,217,209,130,181,148,234,50,108,31,242,223,242,111,214,107,135,185,46,254,62,29,245,119,48,124,189,108,178,251,66,249,57,120,67,159,15,183,243,39,177,219,232,83,110,183,56,162,237,173,205,146,4,238,52,223,225,9,55,178,203,95,158,236,39,117,254,204,134,172,246,162,127,145,253,227,170,106,91,171,215,215,11,233,204,79,198,194,237,17,250,150,115,16,230,101,121,186,58,34,57,215,176,32,211,119,29,39,59,248,24,122,166,189,25,230,147,186,204,150,76,73,148,88,98,218,227,114,69,55,228,73,199,0,120,253,29,76,14,215,97,53,159,164,212,130,57,234,98,239,120,54,57,94,255,127,10,41,17,68,255,127,10,201,150,22,129,9,83,245,173,189,230,120,33,124,12,151,34,34,82,89,145,93,169,102,224,3,254,39,138,231,121,115,42,30,131,118,179,149,159,65,232,44,201,206,34,252,188,227,252,216,78,222,116,232,65,12,198,16,117,216,103,20,147,32,101,20,252,221,184,11,60,185,75,223,11,50,2,26,42,252,37,81,45,249,32,97,151,198,218, -168,203,200,25,103,114,13,3,49,21,95,178,213,19,32,29,161,174,144,66,66,2,140,91,181,87,26,123,162,55,135,7,227,251,121,240,19,215,120,72,15,194,74,202,236,68,45,90,2,201,59,122,34,135,234,88,147,153,165,7,98,68,153,254,212,66,46,201,140,168,134,18,36,219,230,226,79,127,201,140,66,30,17,222,88,60,170,133,141,241,41,27,154,201,31,65,63,125,120,231,136,166,119,205,4,104,15,68,234,95,167,196,115,232,107,24,85,24,118,217,210,117,223,160,131,64,245,221,117,144,18,70,100,173,163,98,26,198,37,33,150,214,151,145,105,149,229,137,216,220,237,145,158,149,59,68,227,216,31,83,157,13,157,166,114,50,71,131,205,166,127,141,179,159,43,87,16,36,142,197,220,124,42,73,120,177,237,251,153,26,174,98,136,76,10,153,235,119,59,157,152,85,227,124,82,221,1,22,178,217,111,87,51,35,231,254,196,184,76,94,154,232,131,106,47,129,88,105,128,199,164,70,119,46,8,24,187,189,204,73,59,108,62,250,196,37,216,122,184,166,122,60,10,212,0,77, -70,56,41,89,253,160,149,240,161,180,70,73,244,114,217,63,71,247,245,243,225,124,110,0,240,190,98,186,167,45,130,161,18,146,43,210,159,197,112,27,109,107,227,140,172,250,111,66,224,60,139,14,75,7,152,96,96,249,19,4,86,80,156,180,105,204,233,95,1,204,130,2,141,147,11,189,206,111,225,76,54,222,248,246,8,117,99,33,10,251,218,80,118,152,246,178,37,120,208,138,87,6,108,105,82,37,19,82,177,220,196,205,245,5,160,153,27,30,184,121,81,105,72,12,130,42,60,240,210,30,247,112,23,132,191,189,198,197,248,44,228,108,132,119,28,203,12,200,125,176,48,210,159,65,46,50,29,225,65,138,72,127,224,241,224,114,94,136,103,11,232,188,61,0,98,144,203,150,220,5,147,132,205,110,254,38,0,88,195,191,138,53,120,195,182,65,211,39,111,190,176,225,193,243,200,144,109,90,54,27,42,49,42,117,227,44,254,195,197,186,169,38,75,101,96,89,101,173,149,46,28,42,66,186,133,82,222,52,247,115,120,106,210,22,213,102,204,244,254,224,135,243,57,117,45,110, -86,36,100,27,108,221,66,9,251,21,173,181,162,5,155,234,22,56,210,145,190,209,155,123,130,55,65,81,42,63,15,186,69,148,245,181,142,106,166,231,69,137,236,98,252,137,141,165,58,49,158,35,82,34,159,176,41,73,133,12,161,33,44,168,210,175,72,215,181,96,200,205,66,43,70,91,105,16,155,16,4,9,68,229,118,253,175,155,117,118,149,43,153,134,33,228,174,0,235,43,186,103,242,140,33,38,127,118,131,144,180,168,22,163,87,95,255,165,99,122,219,233,149,202,37,45,225,160,188,134,208,94,234,167,232,176,175,86,97,60,125,131,42,180,210,189,127,158,167,172,60,3,154,216,32,77,2,203,143,191,176,110,247,0,162,250,94,70,127,129,217,144,156,178,13,76,123,73,228,108,69,135,202,246,228,80,135,13,187,51,5,88,160,95,215,156,76,150,197,24,147,177,28,32,242,5,121,196,98,54,232,54,206,207,98,158,0,239,34,94,86,93,69,146,235,219,145,189,189,205,114,12,70,52,101,122,112,221,37,106,227,187,173,209,254,124,77,223,19,243,149,121,233,158,3,239, -171,101,116,1,222,113,181,216,6,14,88,250,72,174,135,229,214,112,152,15,20,83,244,210,241,126,84,231,192,151,103,55,155,84,109,237,104,149,107,251,36,191,238,63,219,107,97,119,157,23,42,181,192,252,103,101,5,95,209,125,173,169,163,46,101,74,116,31,68,152,30,146,18,210,110,227,198,225,32,93,87,116,41,124,97,133,59,180,178,16,165,201,238,101,5,19,94,162,220,37,71,1,33,106,0,25,146,166,40,12,151,244,201,170,173,135,158,245,189,254,148,254,27,38,254,137,167,208,16,23,194,28,236,97,67,47,78,34,114,9,11,253,15,213,36,12,184,137,24,30,192,251,27,192,208,224,53,168,136,42,89,6,22,48,46,84,186,153,121,238,109,75,254,86,14,178,63,221,157,53,52,159,142,91,102,142,162,149,104,114,210,26,219,232,254,144,234,135,209,226,95,223,74,175,173,40,44,19,111,103,128,127,17,122,27,76,76,225,52,121,191,86,37,47,193,89,211,55,45,220,36,47,251,203,238,44,201,30,208,84,178,243,181,219,20,189,225,210,94,114,50,61,219,72,35,38, -44,234,162,32,235,103,88,252,9,76,49,43,35,225,235,32,140,15,200,91,160,50,36,121,38,33,56,130,246,13,170,11,18,14,40,26,94,175,89,59,182,195,189,216,1,163,219,253,215,226,52,93,87,226,103,99,55,7,221,149,201,111,243,56,113,223,135,151,110,75,221,208,38,146,12,145,105,93,31,47,168,236,59,213,35,179,60,227,124,21,173,94,189,29,157,166,107,8,87,158,213,248,25,74,105,228,221,156,106,225,253,140,121,236,77,156,85,200,39,238,169,236,41,236,127,197,116,248,191,9,25,140,137,108,214,203,81,97,180,4,77,75,45,100,177,222,1,144,10,36,252,233,97,234,124,230,31,237,239,172,118,170,52,27,217,217,128,44,221,107,18,0,84,200,139,94,175,250,129,47,59,151,184,18,167,116,161,46,213,239,177,147,118,137,78,45,149,95,57,28,87,208,105,105,215,248,185,54,190,184,102,144,28,103,193,53,143,210,9,131,151,168,89,235,158,93,187,236,197,38,216,190,5,2,177,253,237,121,39,109,112,179,9,160,117,73,9,48,183,208,25,233,27,9,134,251, -194,161,193,190,86,113,119,233,75,199,199,49,47,236,71,1,196,112,16,166,140,31,130,65,193,23,160,249,6,106,86,42,134,167,46,151,140,136,61,84,93,29,253,85,89,194,216,188,94,9,249,245,178,203,46,187,251,106,19,137,144,19,80,244,139,166,20,218,226,160,38,211,208,249,26,78,169,121,4,142,237,233,253,248,161,138,111,85,216,253,183,241,238,125,39,255,57,140,51,103,251,231,48,55,141,26,21,32,36,12,154,19,245,8,51,65,217,91,63,126,6,205,153,137,128,236,255,154,117,239,231,198,207,51,79,240,95,97,249,106,231,228,41,219,167,153,221,217,218,178,247,166,38,111,185,110,206,51,229,153,218,251,193,213,150,90,18,101,245,77,171,91,219,77,89,246,237,110,21,0,34,39,2,68,78,68,34,136,76,228,28,136,72,34,146,200,145,4,9,16,36,50,8,34,145,0,65,240,190,32,187,37,89,234,150,231,174,102,238,182,171,11,120,241,190,239,19,222,207,243,188,79,120,187,119,55,253,58,14,36,181,129,190,65,159,155,72,88,54,150,88,53,211,42,93,59, -219,223,226,122,80,156,72,93,121,215,180,36,147,156,38,125,191,90,139,24,51,85,159,129,176,149,41,94,234,19,172,168,73,200,232,243,196,114,97,3,135,21,229,206,4,171,172,70,196,79,57,103,130,84,70,83,30,74,144,93,87,194,93,125,38,145,39,180,96,57,229,233,229,25,186,168,16,203,11,134,45,137,121,107,189,160,163,198,134,125,12,219,195,110,26,165,22,222,170,135,49,64,81,122,72,28,72,33,232,5,13,222,109,120,153,106,116,41,148,62,15,97,243,28,190,125,161,110,96,16,81,108,12,138,63,142,67,178,178,109,209,20,203,58,215,21,235,179,213,46,25,180,159,235,184,234,224,99,229,84,95,137,183,104,245,204,225,249,169,86,22,190,238,178,51,154,60,197,159,86,68,64,71,12,182,122,47,167,209,41,149,141,3,80,211,213,150,198,247,2,100,91,34,133,48,34,27,147,27,110,68,99,230,147,110,49,74,77,12,117,134,39,31,50,82,204,92,92,94,7,85,8,184,35,169,103,43,65,172,133,243,84,104,3,92,163,163,125,101,47,251,122,118,213,63,195, -212,217,42,162,48,136,172,72,236,113,42,5,167,61,234,102,35,156,102,129,105,171,98,225,38,106,187,187,107,150,132,181,49,73,74,88,204,237,217,253,24,113,127,160,219,62,190,189,85,59,29,219,150,99,246,225,192,169,92,59,18,233,202,166,117,11,253,116,139,61,95,103,222,193,220,17,231,137,248,24,217,72,170,104,85,12,197,41,208,89,220,132,129,32,119,30,87,134,120,238,250,108,70,132,242,7,56,248,186,171,93,109,89,139,241,124,28,29,137,143,44,13,43,158,46,30,216,42,134,230,136,124,169,138,226,109,141,187,32,123,67,17,204,51,178,195,146,30,173,86,120,206,132,200,168,237,218,157,59,27,239,82,117,198,206,229,221,62,155,62,38,52,252,6,47,59,230,3,221,16,209,68,223,230,226,31,232,133,220,87,255,64,127,255,42,136,188,160,194,192,169,30,235,54,208,13,87,49,21,163,191,119,205,206,96,51,160,193,58,52,128,70,146,213,100,155,122,51,169,218,69,81,8,102,77,1,138,105,131,168,6,223,62,251,186,237,35,57,105,74,56,211,90,38,39,148, -76,220,22,117,39,111,176,144,142,118,249,208,138,10,155,181,197,67,59,197,122,253,74,55,218,47,0,205,103,203,86,118,172,147,49,151,46,232,9,194,119,166,144,73,147,121,56,75,138,50,207,78,113,225,86,4,123,24,245,167,125,165,40,226,188,213,168,56,142,58,7,61,10,90,101,168,40,253,164,22,41,214,246,92,138,123,6,76,206,114,141,246,28,130,134,46,200,128,36,102,51,160,109,222,38,39,12,194,88,65,168,34,86,117,44,16,242,78,123,88,228,12,5,52,228,112,67,201,212,240,187,18,21,106,159,234,112,197,6,224,60,216,197,118,172,30,87,104,146,213,193,192,229,138,140,89,10,133,46,65,133,171,216,72,147,81,207,91,37,11,93,23,129,146,120,162,132,5,91,62,28,56,22,132,198,111,214,66,72,150,39,16,235,185,14,9,235,16,53,153,226,201,149,103,235,134,26,109,211,44,22,89,168,226,160,157,167,102,135,51,107,16,250,254,174,144,32,244,210,142,111,39,167,93,201,108,79,163,183,115,27,67,219,209,113,3,238,212,140,134,6,89,196,90,53,174, -107,53,20,241,152,141,193,101,124,70,145,53,107,183,138,195,89,195,120,219,196,45,141,207,89,165,89,251,6,91,56,158,48,121,72,138,217,135,187,158,137,28,197,219,117,246,29,158,121,167,196,51,238,240,156,187,46,14,127,103,224,31,51,3,5,66,242,26,95,147,107,15,242,49,206,238,198,112,14,116,21,39,232,233,106,2,210,242,97,82,241,237,82,255,228,114,198,140,238,198,207,218,219,228,227,77,12,141,235,111,110,151,176,214,91,213,33,235,212,225,200,223,208,72,5,110,117,190,137,158,110,109,236,24,143,52,13,14,118,156,57,202,208,27,23,54,162,108,77,79,238,95,159,97,203,210,198,92,230,65,157,220,119,222,136,131,206,78,122,213,0,162,52,78,16,101,25,51,140,35,8,123,110,252,53,92,15,246,163,68,23,40,76,120,8,225,177,166,60,8,199,141,223,143,221,217,122,41,109,155,214,115,225,131,41,186,171,117,154,108,16,128,43,196,3,243,225,246,202,6,140,114,174,206,79,110,72,74,91,134,173,105,138,176,228,86,247,236,80,185,54,36,42,112,155,46, -206,13,170,25,200,97,205,209,6,50,189,27,153,250,182,29,123,32,211,70,175,37,117,171,34,48,24,201,232,42,146,143,35,208,104,238,16,195,227,157,110,69,104,172,76,155,95,9,227,114,13,116,79,28,85,40,42,6,156,164,220,56,193,232,103,80,159,2,30,40,119,93,87,220,53,59,175,9,229,181,78,103,212,154,129,157,76,171,89,109,220,8,190,31,148,66,61,171,120,182,53,115,89,47,18,37,225,187,9,140,227,201,197,5,238,88,0,46,103,41,170,206,42,98,163,155,67,181,121,32,157,0,89,185,193,176,161,117,162,131,206,167,147,109,149,115,36,231,196,100,202,236,17,236,161,62,107,157,82,36,176,61,234,22,200,92,203,210,109,190,28,69,179,143,83,99,176,204,40,50,56,241,132,233,114,210,153,29,27,7,11,209,122,175,43,105,15,199,235,216,97,195,110,189,185,236,119,247,229,190,186,92,234,60,223,244,119,165,138,104,86,43,86,42,45,69,86,179,141,48,85,140,131,4,69,92,102,246,106,202,45,48,228,168,102,179,14,68,3,171,125,218,52,170,108,71, -94,155,146,139,81,98,200,46,52,45,197,112,147,84,60,122,15,100,32,8,239,248,149,221,59,200,94,115,120,80,4,65,111,53,91,165,54,195,108,59,96,250,6,138,192,49,145,135,44,157,174,185,172,87,96,119,189,45,133,197,78,16,39,70,220,57,152,212,51,226,107,194,187,218,56,65,58,54,39,104,180,249,76,94,159,8,210,236,18,181,104,75,208,211,220,177,164,191,43,181,161,47,142,136,167,135,140,12,71,208,45,117,174,174,100,243,43,83,190,36,45,218,12,251,99,83,252,66,127,170,23,2,210,121,91,142,198,28,114,157,227,242,15,58,71,59,254,27,4,255,182,13,191,186,228,23,11,101,87,238,176,18,7,243,71,74,70,158,172,32,240,148,107,160,85,131,58,10,186,142,54,96,99,47,20,118,94,3,194,9,44,80,38,120,202,195,171,241,53,21,202,242,226,29,109,136,12,69,20,196,54,220,252,93,180,229,68,122,46,74,202,55,152,229,120,149,182,63,236,193,176,166,248,81,16,222,219,178,160,117,249,60,73,100,232,230,233,36,139,134,209,225,109,233,110,5, -23,101,51,141,211,202,85,16,42,156,175,210,112,17,139,204,228,169,1,213,137,28,234,144,124,165,95,208,70,151,19,240,226,90,106,150,184,221,145,103,121,216,211,48,218,59,81,114,208,16,36,108,20,87,160,80,21,68,49,5,7,109,197,136,144,117,196,69,2,33,33,65,32,86,55,216,58,134,142,188,57,116,252,192,97,119,187,47,54,85,12,125,91,11,170,194,18,166,147,217,185,118,224,112,129,234,121,60,92,120,141,222,229,29,170,185,12,170,45,229,153,175,249,149,195,200,250,164,69,167,16,162,70,9,19,132,132,16,144,115,183,23,201,58,132,50,195,219,124,181,167,134,150,91,114,106,57,206,86,146,235,90,20,91,73,173,179,161,42,22,246,214,30,25,233,40,155,177,36,228,68,185,47,145,217,117,89,247,97,253,186,187,107,160,142,3,251,234,116,33,71,154,58,43,178,131,189,109,136,255,196,154,182,182,105,193,189,118,123,162,76,133,69,163,108,208,58,164,241,249,93,124,38,181,206,85,155,161,215,248,0,206,87,231,162,36,54,232,228,234,0,100,62,184,61,90, -191,78,156,194,91,41,5,70,145,10,220,118,169,109,215,198,213,97,26,118,114,131,147,82,144,220,72,175,138,152,152,15,177,42,225,25,103,103,214,80,136,118,180,180,227,130,92,117,204,25,209,54,250,105,158,193,129,28,209,136,151,90,169,246,120,154,9,23,103,151,22,93,169,105,163,49,163,243,196,145,19,106,3,241,104,41,53,44,225,173,123,106,107,184,171,202,148,84,43,154,69,229,3,240,90,231,150,49,61,116,222,142,241,107,23,197,189,185,144,155,181,250,207,200,72,180,254,172,5,158,14,64,251,101,52,131,0,145,240,59,4,116,112,117,3,56,103,198,149,139,85,230,154,145,206,43,101,225,19,215,84,95,146,7,31,206,188,251,92,50,236,178,88,69,24,147,46,215,117,98,157,31,43,83,221,176,27,23,106,2,59,56,63,167,179,202,251,112,179,77,218,21,155,41,39,27,231,144,78,69,186,177,207,50,185,83,163,45,214,85,205,106,20,135,49,120,186,169,114,34,11,243,38,176,250,154,210,90,152,94,239,51,197,74,144,18,59,18,18,119,81,196,177,43,7,142, -21,32,85,120,106,123,83,60,34,148,32,96,37,216,234,84,78,201,21,200,214,45,65,120,238,77,173,66,231,112,114,140,190,110,246,102,252,106,184,59,36,9,77,120,32,134,245,150,63,152,239,209,245,215,206,193,14,219,33,100,30,216,77,16,144,43,136,92,223,63,15,156,67,35,77,56,19,4,177,147,166,157,24,26,115,62,223,6,225,238,176,205,99,81,137,238,184,148,110,170,207,48,135,16,233,24,170,152,145,116,28,16,201,143,207,28,10,130,173,152,64,211,3,141,87,173,206,2,49,141,118,203,183,108,6,75,152,227,102,89,79,154,144,178,245,60,139,9,81,47,49,121,246,225,54,195,79,202,13,7,231,54,57,239,80,184,217,48,162,179,96,241,196,70,109,181,54,69,21,20,92,107,200,146,142,197,212,117,150,20,232,225,206,137,55,237,137,130,178,93,188,168,149,14,143,81,211,117,116,1,149,36,78,130,229,212,49,225,244,110,119,239,110,13,123,124,155,196,85,8,109,232,206,132,102,153,195,64,158,219,51,140,144,224,187,20,38,106,171,64,154,167,211,77,238,24, -15,123,173,118,130,108,138,189,120,211,76,150,94,109,244,61,25,157,179,32,61,174,135,104,195,158,158,172,138,70,105,7,212,177,72,121,119,118,49,114,106,135,180,98,7,227,197,141,61,241,99,129,190,65,35,216,64,28,227,121,40,96,218,131,219,218,19,38,183,175,98,152,68,132,235,45,230,112,10,68,12,221,65,39,217,189,235,113,133,128,119,216,184,86,255,229,25,20,137,49,23,185,59,215,13,31,162,56,175,108,172,83,73,102,198,166,43,101,11,218,130,137,104,229,122,204,52,36,121,187,179,18,122,16,146,178,14,56,227,118,115,211,219,238,113,45,109,144,57,159,139,138,5,206,105,60,151,42,7,67,209,45,28,101,156,42,36,73,13,48,111,221,65,244,15,125,9,240,230,212,105,19,158,108,118,3,18,33,202,3,15,250,228,61,130,10,193,56,177,33,147,179,106,155,229,66,149,119,171,116,149,60,203,33,163,251,67,235,118,30,219,177,159,226,72,235,20,13,70,103,20,4,226,115,232,26,153,8,211,141,35,5,84,107,107,163,30,39,130,51,28,254,52,127,168,215, -232,81,176,48,234,96,76,199,210,205,177,54,65,71,138,42,92,237,168,115,216,12,179,192,39,27,243,174,70,135,33,10,58,80,61,251,172,197,8,54,24,76,130,178,9,226,147,35,30,253,101,94,48,58,55,90,250,13,28,98,112,174,34,226,133,86,108,20,168,111,65,224,154,27,87,4,97,233,70,18,252,162,180,193,209,102,34,116,67,175,10,170,112,113,94,221,246,137,152,238,11,109,122,200,152,84,39,52,2,5,107,134,172,204,22,113,207,111,170,251,98,28,200,0,23,236,227,160,59,4,47,243,24,125,84,159,193,78,91,123,82,166,146,101,239,144,246,33,185,32,166,83,26,54,207,164,6,10,83,76,28,108,146,33,180,126,84,30,201,151,199,227,102,155,171,137,109,105,65,45,109,86,26,173,117,156,237,129,100,180,177,125,200,81,41,157,65,162,229,84,162,170,55,102,152,74,95,149,187,206,114,213,182,59,79,105,142,59,197,205,206,118,214,175,90,119,129,232,60,239,153,187,206,130,179,50,250,42,88,90,111,25,135,171,202,195,173,226,204,129,234,57,118,53,20,52, -81,181,53,159,93,147,241,99,164,158,214,189,24,195,44,183,137,228,142,37,215,190,19,75,118,138,155,23,115,83,102,46,110,175,207,77,241,59,113,243,120,93,194,82,101,91,42,90,75,174,162,202,105,225,209,32,156,134,179,193,112,202,153,11,79,221,25,123,80,116,86,52,30,37,214,209,33,55,180,139,75,115,162,64,163,222,62,136,213,198,23,65,227,221,249,24,116,206,163,9,125,120,211,108,117,167,49,64,113,113,171,21,40,59,29,32,199,117,40,112,171,17,139,34,12,17,55,187,93,17,157,218,24,140,156,38,148,129,66,137,68,97,89,84,69,84,161,160,92,47,178,183,111,236,179,202,123,84,30,170,145,115,87,226,126,159,129,104,210,250,14,193,215,64,14,115,175,238,25,54,76,190,4,138,16,12,123,80,118,108,69,22,217,115,163,187,53,157,153,70,220,135,176,52,26,39,70,35,244,69,144,40,211,233,53,188,151,236,195,36,94,48,148,72,25,38,18,130,106,212,116,155,247,149,141,64,160,3,243,194,92,93,9,220,27,236,90,162,117,177,168,3,53,246,132,200, -109,137,126,156,166,138,17,157,53,111,72,204,225,66,83,32,72,110,181,225,231,128,133,240,200,174,171,70,230,114,76,96,57,8,223,158,65,173,107,249,177,178,98,212,136,247,218,236,237,115,28,11,158,192,71,213,218,253,224,196,84,67,221,122,92,85,15,136,188,233,137,245,249,177,203,120,244,54,114,216,11,14,138,236,38,127,211,64,72,205,208,135,125,55,62,100,182,128,136,173,85,111,164,138,200,235,29,109,140,218,19,186,198,55,196,80,36,106,92,170,236,174,49,78,50,215,80,3,69,235,83,172,75,133,56,159,132,48,227,98,78,188,154,96,109,98,145,201,152,162,110,38,234,232,54,90,233,116,96,178,43,174,106,56,136,42,153,64,44,28,236,58,25,254,8,67,51,232,40,71,81,69,43,125,222,209,73,6,249,250,233,128,234,238,100,146,35,103,197,206,62,138,138,104,9,221,165,60,127,29,58,247,131,85,96,6,111,102,105,146,157,9,31,77,118,77,76,228,247,19,64,95,125,54,94,71,210,142,205,215,166,89,254,116,202,146,70,169,178,36,42,183,87,57,237,48, -115,36,31,3,177,31,204,13,246,168,87,53,243,161,10,119,115,182,63,229,79,88,170,49,146,6,31,17,18,166,18,126,128,23,178,163,220,35,25,129,94,247,133,152,202,158,107,140,12,136,75,218,81,82,127,183,10,203,216,205,167,61,132,174,167,217,241,114,139,226,171,220,188,188,99,88,187,189,196,59,247,7,3,27,24,67,100,185,105,78,31,88,30,75,123,17,92,156,139,77,149,48,37,4,206,12,95,69,160,72,7,60,171,73,93,209,48,240,145,58,161,234,63,181,65,178,120,162,138,203,46,239,9,229,206,13,198,37,135,114,152,223,105,4,224,92,134,48,118,229,9,139,231,120,184,120,149,119,183,214,178,179,125,12,208,6,53,119,130,183,75,183,81,230,75,76,132,5,180,24,118,242,32,201,230,167,249,33,23,218,204,136,84,50,80,245,41,118,131,114,185,238,57,64,129,160,49,13,193,233,157,123,200,188,36,177,143,32,81,34,204,148,46,30,133,82,72,101,234,48,22,155,227,141,235,97,155,244,182,24,52,49,219,91,66,37,84,79,66,37,92,123,161,144,212,182, -39,82,146,141,235,133,53,2,145,48,117,213,46,196,121,182,225,100,151,61,42,86,185,241,158,91,4,165,64,9,238,227,18,166,33,111,157,115,82,195,190,133,11,163,220,76,118,13,177,53,125,234,70,106,157,65,114,187,28,255,84,98,20,75,99,126,81,244,204,71,76,147,119,152,104,110,208,175,220,58,131,209,171,51,114,175,80,142,192,79,32,96,125,222,109,47,147,134,112,82,187,26,161,106,38,251,20,17,44,70,171,164,145,103,61,62,213,194,22,201,152,136,116,212,222,160,41,43,30,160,73,73,134,211,193,54,13,102,223,112,251,57,46,93,108,53,153,62,76,150,123,71,170,241,141,180,168,58,176,222,218,187,85,197,22,201,67,24,41,18,90,246,229,0,209,49,146,142,252,172,118,90,83,89,221,243,16,121,45,225,173,174,64,144,158,158,58,198,122,133,211,32,221,173,225,53,215,69,44,236,52,194,173,56,43,107,249,173,19,244,218,126,219,174,29,160,20,174,100,31,137,17,42,176,98,19,82,212,147,156,101,205,99,196,170,166,181,115,122,67,218,11,115,232,248,2, -231,182,108,223,71,165,103,46,56,135,210,39,213,170,39,12,94,65,90,131,157,122,57,236,78,212,183,55,199,222,202,186,220,194,77,27,113,108,98,114,118,216,102,157,110,255,4,58,189,171,87,167,83,97,146,147,239,149,97,196,131,83,11,204,94,65,119,199,234,132,134,177,134,85,246,186,53,135,126,102,155,235,204,58,47,113,80,58,33,142,237,187,99,100,55,139,173,139,136,59,122,18,219,166,115,232,180,68,237,28,214,223,247,69,183,2,41,114,157,201,66,129,162,235,195,85,140,182,138,175,226,16,88,229,186,255,70,34,230,29,35,53,170,221,91,124,42,50,181,100,56,61,27,171,221,59,45,26,49,72,136,136,142,48,11,220,84,85,143,96,112,73,189,120,171,148,141,196,172,139,104,235,142,180,174,67,104,64,48,181,97,34,25,244,83,248,190,138,132,11,231,32,179,195,4,255,52,23,175,186,131,83,17,106,143,183,45,240,50,251,242,144,210,37,177,33,234,170,154,71,3,137,134,156,144,155,59,63,193,227,246,83,214,174,46,103,254,53,135,61,37,24,8,210,146,171, -86,195,234,55,219,21,27,37,169,171,117,155,108,74,24,122,243,204,190,189,189,134,185,41,187,174,25,230,29,103,150,183,233,245,215,55,106,52,241,157,239,86,62,241,202,207,238,146,242,116,50,57,189,76,148,113,218,57,55,187,39,217,152,142,164,178,107,193,218,105,31,27,134,163,123,84,247,126,26,230,202,88,146,195,222,48,31,27,249,29,122,92,246,202,227,164,29,93,221,52,212,180,11,151,118,114,28,190,69,212,11,28,77,7,182,117,70,228,104,178,99,30,204,121,140,193,221,186,235,120,207,213,250,206,84,151,227,138,230,16,196,198,122,179,164,104,109,172,138,92,16,132,104,200,6,37,227,190,93,62,3,206,94,229,203,230,168,245,75,231,141,185,118,178,141,66,68,140,18,144,212,141,182,72,205,8,116,57,230,178,8,143,61,69,255,5,93,89,234,91,3,82,59,79,71,231,175,246,208,160,150,239,224,112,156,242,49,54,248,185,206,229,53,253,196,141,29,104,181,80,20,120,221,144,59,79,65,182,15,144,102,191,162,62,27,208,33,163,131,1,138,37,176,145,174,183, -178,86,29,145,123,163,75,14,45,183,214,14,208,46,148,119,116,28,94,62,70,66,8,187,51,181,215,120,189,1,213,24,103,154,198,42,158,200,91,215,187,134,84,18,148,117,208,41,247,120,40,41,239,186,1,187,66,142,245,253,83,141,192,109,224,33,43,70,223,144,29,113,99,19,193,61,211,69,57,87,199,54,251,73,48,127,45,163,143,94,176,182,248,39,208,13,184,101,124,232,72,48,59,118,239,140,62,154,162,83,126,104,131,160,201,72,253,48,85,188,131,174,65,50,7,158,43,98,166,230,139,141,64,66,164,185,102,195,178,70,30,114,65,68,9,193,237,220,88,0,115,102,160,24,134,153,116,194,2,145,21,138,30,30,225,92,34,211,108,82,69,199,194,144,35,57,28,94,101,146,147,155,4,30,95,47,90,219,245,94,224,20,69,195,137,154,232,20,230,134,114,208,36,51,165,165,190,87,44,219,216,78,52,74,37,231,225,65,151,91,35,31,28,132,179,170,204,197,97,9,168,253,21,199,142,84,201,225,44,28,238,68,215,192,136,43,87,11,30,189,137,32,60,34,93,114, -117,56,35,249,40,103,221,13,217,142,179,224,185,114,204,59,134,249,200,60,31,169,213,83,200,30,187,38,222,31,117,91,26,229,100,171,10,107,65,226,228,89,17,221,231,64,90,152,173,253,198,129,149,199,68,119,89,91,123,23,57,111,201,204,241,25,194,65,39,251,108,224,62,183,118,253,183,226,33,135,21,51,204,138,61,37,123,132,208,42,148,246,9,24,49,119,93,5,112,158,59,148,133,15,57,202,183,215,140,158,228,96,228,77,227,32,197,52,54,150,25,230,209,154,157,132,176,192,202,187,241,235,226,93,48,5,225,28,82,65,234,107,35,117,221,202,35,78,145,33,38,103,24,110,49,229,4,47,154,57,134,139,122,123,67,161,137,196,31,132,113,90,218,110,45,173,84,9,129,242,126,111,194,41,23,187,74,11,208,244,8,78,249,14,110,15,186,165,223,226,15,102,44,95,75,25,55,159,147,30,18,7,83,156,112,22,203,59,38,39,107,212,244,234,251,58,161,151,13,212,111,144,178,37,64,235,230,66,168,99,107,20,97,174,24,187,117,166,53,98,56,180,160,152,142,213, -169,83,26,142,201,69,142,118,91,208,213,173,173,11,77,244,201,25,189,39,25,92,247,251,109,4,150,142,25,176,205,202,41,231,0,78,214,176,120,49,173,31,143,93,75,10,246,131,246,77,239,102,236,174,90,141,67,66,97,66,188,179,170,43,169,187,227,92,20,1,49,9,134,133,132,70,6,221,113,195,45,178,56,209,187,85,223,29,246,16,68,38,213,116,49,19,41,96,119,77,88,136,106,77,175,19,234,241,68,102,219,129,227,166,207,246,235,155,150,203,201,72,197,182,244,93,231,129,27,163,159,143,24,132,249,23,5,131,189,151,244,229,211,40,220,112,155,135,212,242,189,50,100,165,124,153,28,247,212,119,230,189,67,197,113,141,38,159,57,3,98,201,245,40,63,61,223,36,115,120,49,16,190,127,7,247,73,237,182,148,17,98,236,22,252,14,123,219,170,154,177,91,237,41,227,120,111,127,16,110,192,29,179,147,134,138,107,107,28,35,65,183,162,49,165,238,105,103,66,252,91,24,193,191,79,203,76,116,194,230,186,190,239,30,225,110,234,215,131,106,201,126,181,62,187,224, -183,40,211,93,232,134,77,186,55,145,193,241,92,66,179,153,81,20,249,205,242,26,199,235,190,42,182,227,115,111,129,197,115,225,78,28,216,154,77,47,201,238,53,143,37,13,237,150,12,206,171,183,160,73,83,36,157,216,79,35,208,64,23,206,17,109,74,128,166,183,28,241,163,118,229,46,239,209,94,231,202,193,118,121,183,225,204,249,124,119,213,140,18,36,46,184,209,120,105,221,232,217,201,130,161,121,181,233,148,230,190,184,176,58,59,67,162,68,101,155,109,83,81,145,34,36,80,16,116,54,98,37,160,107,190,91,191,66,174,45,58,214,249,246,221,241,220,212,188,86,164,144,117,175,118,179,92,31,111,129,3,28,220,165,199,174,116,52,77,229,13,182,112,58,128,160,4,160,27,175,113,106,188,114,97,73,241,0,33,134,77,146,252,250,77,25,92,164,245,235,247,93,164,248,233,49,50,4,185,4,109,169,8,110,203,218,37,156,162,169,75,80,164,51,172,223,114,235,66,244,193,204,58,189,13,82,200,193,126,175,170,68,30,102,242,9,255,13,220,94,150,167,8,32,52,125, -60,245,156,154,170,60,239,197,193,6,214,194,175,235,225,48,50,214,26,8,84,105,132,161,111,119,147,129,132,131,34,234,77,100,252,132,140,60,129,207,241,195,86,116,99,181,129,103,203,2,183,68,51,62,187,1,110,186,81,45,215,28,104,248,252,243,128,108,76,211,56,48,163,36,81,21,27,241,249,177,131,186,217,122,118,7,22,117,78,156,60,143,11,129,65,95,59,67,217,27,6,212,124,9,147,178,69,73,119,198,60,156,205,15,174,76,39,205,43,111,90,88,111,109,51,135,56,201,96,155,105,118,209,125,94,74,12,213,243,34,174,93,19,47,66,105,155,106,46,46,92,157,220,206,154,233,14,145,129,194,247,231,177,192,173,114,132,161,164,240,76,23,217,19,38,173,242,204,214,211,150,28,187,173,149,69,80,218,11,63,11,210,148,143,115,131,222,222,174,61,85,113,174,174,91,19,205,16,49,186,238,32,31,198,47,207,148,48,23,11,116,90,186,204,103,221,46,135,117,102,128,200,132,4,222,126,93,129,58,42,193,237,69,22,231,36,225,33,83,210,153,106,158,71,72,135, -141,156,244,184,155,202,38,59,177,182,48,91,18,118,57,214,33,89,91,119,184,128,60,15,65,5,204,156,105,210,219,62,135,236,89,57,228,85,167,223,135,45,131,178,188,34,93,107,57,52,159,111,33,211,67,229,142,58,69,216,225,223,166,93,67,97,23,17,63,217,27,241,134,171,118,231,129,181,148,76,111,200,246,110,192,93,234,250,124,255,216,15,4,254,157,38,151,219,233,221,197,236,200,189,172,47,167,44,196,58,100,51,124,122,145,2,215,114,123,160,93,90,44,203,77,187,232,133,238,176,216,74,29,129,20,91,113,181,174,18,155,172,114,232,155,144,53,43,207,3,30,166,139,240,14,26,190,122,129,67,76,162,117,164,168,207,75,154,29,34,149,228,122,98,228,150,119,96,228,30,151,78,209,87,243,241,104,212,136,27,20,93,142,106,52,53,194,247,194,133,196,8,97,221,229,97,206,45,26,178,140,176,171,73,33,33,61,16,12,52,136,249,224,101,15,121,223,61,36,10,181,213,148,143,45,108,82,230,160,134,205,25,42,172,118,3,156,242,134,77,104,91,189,217,53,15, -106,8,34,29,125,138,232,123,27,141,203,153,115,147,195,173,38,133,179,194,140,176,118,213,87,39,230,2,94,160,226,42,77,47,39,212,110,253,56,57,130,212,235,243,59,50,190,118,121,57,36,170,174,18,183,210,213,153,19,204,52,83,193,165,113,48,75,89,252,87,2,55,108,28,226,203,181,163,253,170,133,117,102,47,18,206,15,153,186,224,254,201,166,151,147,78,33,4,231,231,3,166,82,86,39,217,242,218,138,28,45,149,35,182,228,150,91,33,187,120,209,72,133,16,187,165,236,174,118,56,238,240,141,150,66,78,228,161,244,211,158,64,26,85,220,29,110,16,167,13,144,104,190,137,236,149,172,34,43,164,131,113,146,194,48,35,141,21,145,153,7,252,189,29,114,20,221,222,86,193,4,235,101,186,178,218,134,102,166,124,215,129,162,153,187,26,187,166,6,121,115,219,119,1,149,110,135,100,64,153,30,162,114,84,86,65,35,216,61,48,140,16,215,182,205,226,234,225,17,151,94,43,220,121,1,227,29,66,106,211,91,158,119,178,149,114,75,189,210,248,94,134,192,200,49,72, -150,13,152,216,195,213,9,188,34,83,236,210,5,73,66,96,212,210,24,115,151,187,186,169,9,82,57,252,116,88,158,27,118,228,151,219,71,14,173,111,168,153,114,119,110,156,185,93,50,133,50,168,14,234,164,61,109,99,102,232,240,34,123,67,79,44,237,60,174,18,64,23,56,139,147,58,36,75,243,228,62,111,14,9,120,157,25,242,85,216,146,163,217,207,214,42,210,160,227,214,149,26,157,164,25,82,50,157,188,151,190,228,220,14,79,184,130,29,77,10,97,226,5,19,123,138,40,71,81,26,244,15,163,105,16,235,104,115,12,133,236,200,218,123,42,116,168,124,125,193,190,212,251,183,154,135,1,144,231,2,45,178,110,29,158,34,247,46,73,39,221,84,78,226,37,147,184,2,119,23,100,147,95,196,83,130,142,103,8,70,41,112,100,217,45,129,112,62,51,144,100,155,77,223,65,205,21,236,217,82,250,163,58,132,10,159,72,188,217,20,255,200,76,138,238,166,153,229,140,4,153,221,156,198,189,22,11,114,4,153,56,18,196,54,34,206,241,68,19,166,125,7,91,162,93,141, -121,220,112,135,38,192,181,35,227,122,17,99,59,123,85,184,181,211,111,39,181,188,119,39,90,118,243,154,250,182,94,232,95,179,66,238,172,83,130,253,232,150,33,77,184,117,171,105,42,68,147,175,244,28,217,97,89,55,185,155,18,66,25,54,108,47,217,84,173,213,214,142,15,156,215,115,199,13,161,22,152,13,44,93,83,90,37,29,49,244,147,152,52,63,202,247,4,144,100,186,127,170,110,236,86,75,44,108,214,219,16,48,170,81,144,127,125,52,180,219,153,169,52,207,36,133,203,167,102,233,193,158,41,154,63,29,240,199,167,34,231,181,68,213,29,148,7,233,105,193,47,60,36,112,171,243,157,209,77,229,0,117,177,187,193,81,42,205,189,198,166,51,0,77,54,183,142,100,157,108,158,135,8,33,2,45,37,60,127,27,63,80,159,20,15,248,10,162,80,99,103,110,158,17,118,148,55,254,213,134,61,18,226,29,173,53,25,174,58,139,220,128,164,12,222,216,216,208,206,32,183,130,81,206,69,6,63,67,135,138,214,232,110,180,100,58,74,244,29,69,103,32,124,153,60,58, -148,92,122,232,163,45,166,214,158,205,172,42,96,23,161,36,90,24,118,58,48,106,163,48,69,105,145,3,126,159,124,19,77,46,118,116,46,172,222,170,247,182,156,215,108,228,118,131,66,25,58,42,90,140,126,130,178,25,99,198,66,83,191,118,166,158,231,242,123,176,43,126,127,224,29,93,79,86,237,35,95,40,162,180,12,186,201,97,211,158,37,109,2,158,144,2,181,26,19,226,126,209,235,147,158,170,43,232,27,70,165,16,202,116,65,158,208,148,150,215,211,217,184,4,118,168,15,65,33,41,142,196,117,59,12,34,86,245,82,15,148,212,189,76,157,226,211,233,90,12,17,224,8,228,224,170,151,11,74,155,246,49,73,116,164,238,25,217,166,163,24,36,174,208,32,145,188,126,76,5,148,77,199,68,248,198,84,83,76,219,232,91,231,22,86,128,94,21,149,86,47,148,212,45,36,45,55,199,166,36,140,51,114,117,67,161,43,142,32,25,138,235,150,124,100,14,219,238,172,30,8,116,139,34,188,29,141,244,114,138,242,74,173,48,174,106,10,122,59,57,181,79,217,97,174,161, -119,122,189,222,252,174,112,103,204,115,183,139,138,160,67,0,213,115,28,39,142,43,155,237,24,121,195,67,158,222,172,49,252,2,18,175,7,245,225,225,20,228,190,47,46,15,57,119,231,198,243,156,81,152,107,166,112,138,140,127,164,101,132,239,252,20,16,6,220,78,34,153,114,140,112,52,153,246,143,57,142,84,109,45,125,231,207,246,43,26,243,53,99,253,184,77,26,24,233,235,148,176,91,223,129,147,156,38,186,103,38,93,61,58,185,72,14,52,6,187,69,193,80,180,115,131,245,216,212,233,43,49,199,36,59,132,123,33,147,88,10,194,173,216,166,138,65,29,241,206,86,165,181,51,135,226,194,143,144,160,179,94,109,10,52,240,49,171,61,167,87,105,14,30,234,71,166,188,251,162,137,116,114,32,42,101,40,32,29,176,48,232,3,138,208,27,43,108,71,47,242,145,33,117,124,98,91,15,166,214,86,179,197,2,95,151,175,89,109,110,183,74,225,108,160,74,226,125,253,166,21,159,80,87,124,219,216,102,148,228,82,164,175,193,121,202,154,172,186,5,109,180,78,14,248,125, -216,5,167,105,42,164,12,249,46,5,189,126,177,121,42,60,186,33,76,44,124,171,125,236,38,89,42,114,187,105,40,133,23,251,250,32,98,61,157,8,175,102,143,115,197,132,205,113,224,179,204,144,90,84,36,29,114,159,89,48,114,162,116,48,61,145,139,128,118,78,79,111,210,238,32,133,4,206,65,110,112,128,164,3,169,205,207,29,105,214,160,197,152,104,90,48,216,17,88,63,98,141,180,167,96,23,81,63,19,92,40,4,198,80,1,104,209,109,93,226,112,142,97,106,173,33,245,85,231,206,112,10,74,209,54,100,137,178,172,194,235,39,40,185,34,185,75,181,92,86,7,215,78,199,49,253,84,154,208,92,41,84,187,61,114,35,92,29,57,138,172,210,129,36,148,186,58,62,160,240,216,88,31,100,8,107,197,54,13,124,79,73,149,81,222,182,211,209,236,145,7,225,55,177,162,7,80,207,29,112,249,247,48,136,206,106,222,129,244,9,61,106,219,161,98,175,120,67,188,150,225,250,233,205,178,142,41,220,102,186,139,194,139,97,84,12,27,73,26,251,45,100,72,52,57,143, -225,38,146,20,185,170,219,40,9,119,116,245,246,124,46,56,66,112,40,81,137,18,209,136,131,57,184,73,92,142,161,207,143,176,197,202,48,233,103,95,80,36,51,74,248,124,219,185,69,59,62,197,92,32,122,138,141,53,146,45,91,234,235,28,55,237,104,119,91,217,160,24,44,198,187,221,236,249,117,193,108,139,104,182,76,187,195,246,126,69,156,233,151,111,192,167,78,49,158,107,113,134,160,163,113,162,10,23,139,228,91,3,168,111,32,45,148,71,37,252,89,75,3,65,65,114,62,191,138,76,83,164,72,48,26,241,102,118,211,57,227,178,58,22,42,138,68,97,109,113,5,178,45,8,102,71,21,87,242,221,116,55,87,30,86,74,180,51,218,224,180,59,174,54,47,6,193,35,131,197,166,187,116,228,175,140,198,61,83,150,211,146,31,208,178,119,216,171,219,155,198,184,175,101,231,153,131,88,159,100,19,81,215,90,121,222,80,155,212,207,115,103,231,49,1,69,214,102,74,139,105,216,90,179,217,20,80,32,87,83,2,17,46,207,169,211,99,248,56,126,139,156,249,20,49,78, -105,75,106,171,88,59,241,22,102,46,163,167,244,249,157,128,53,88,133,66,37,251,16,177,71,97,141,180,213,38,97,130,122,10,142,133,225,57,62,8,222,0,187,60,186,200,89,86,0,151,50,54,119,201,19,198,229,182,16,193,161,161,181,222,97,152,105,8,242,119,136,200,171,44,169,46,239,144,229,182,92,222,204,163,196,160,158,124,58,119,49,10,109,103,241,118,56,14,151,244,246,132,16,142,75,78,54,222,162,37,210,45,182,56,225,159,9,93,186,9,93,114,185,26,200,247,225,227,118,3,87,59,183,218,213,103,80,236,153,5,220,159,165,137,107,30,144,97,231,36,86,57,178,28,167,132,158,138,51,27,166,132,137,226,20,35,30,236,156,111,6,14,174,198,173,115,109,84,213,64,180,70,117,165,129,169,44,148,139,216,148,15,51,44,4,207,149,160,76,164,160,96,156,116,132,142,38,197,79,219,218,98,52,115,180,237,19,119,106,251,76,149,239,100,64,46,82,157,182,190,38,72,232,154,19,232,20,93,218,82,12,9,199,194,216,68,112,102,203,111,217,143,169,181,53,238, -217,132,86,153,133,167,141,185,200,185,179,182,31,226,76,120,214,214,254,118,231,130,8,111,224,12,14,29,88,124,26,110,107,141,98,36,233,212,234,103,207,157,151,38,251,49,37,19,84,243,106,234,121,8,142,199,208,145,208,38,172,133,227,229,70,170,137,113,75,172,91,159,90,178,113,188,43,134,45,173,53,211,245,219,187,164,211,186,227,239,213,132,176,202,181,50,129,160,172,65,125,9,6,21,89,135,38,66,144,105,56,190,117,218,234,90,117,240,125,134,78,169,17,29,31,30,114,102,199,243,219,236,1,247,206,177,106,157,12,117,78,134,42,142,157,156,76,80,202,59,158,136,34,134,156,249,16,117,10,245,120,154,219,148,32,8,86,106,117,159,44,95,37,29,108,95,166,203,188,109,4,181,24,112,184,246,83,232,163,99,54,9,58,50,73,53,2,246,132,20,131,144,157,225,163,171,242,217,149,105,189,209,202,132,147,174,174,108,16,104,103,180,1,129,162,88,172,92,110,43,124,238,20,127,92,9,5,225,135,123,157,163,190,0,198,137,228,166,113,155,148,30,243,75,246,21, -230,52,242,88,103,139,91,252,218,221,150,242,240,200,185,30,130,71,36,5,175,28,1,135,172,121,168,107,30,168,231,82,238,149,66,226,5,202,201,58,82,132,219,55,104,132,97,131,50,145,80,178,215,24,62,116,198,46,247,24,20,17,184,155,113,5,95,67,181,246,186,218,62,141,195,215,13,56,168,154,74,34,40,110,29,244,13,141,67,37,179,124,142,43,214,91,228,155,163,138,163,89,25,83,42,167,41,188,125,139,97,93,107,98,19,140,12,142,49,189,65,81,196,227,43,102,208,37,90,79,169,26,62,183,171,29,80,136,239,20,114,69,86,18,145,187,181,30,73,9,174,177,112,141,138,246,121,128,200,188,32,27,166,242,208,198,97,40,203,20,52,213,237,98,174,44,34,93,203,84,7,164,160,172,84,24,167,78,168,8,150,7,173,200,96,183,154,237,85,219,81,182,198,101,77,219,78,120,4,200,9,186,78,223,136,223,111,97,252,60,246,80,156,85,141,171,25,170,116,58,67,157,43,168,251,51,254,62,131,100,40,210,7,162,246,101,57,63,175,134,57,193,80,248,58,111, -217,71,5,108,156,77,95,73,21,56,147,23,204,2,72,252,12,122,38,226,80,247,115,40,203,60,126,182,75,97,73,124,178,19,223,93,193,237,216,144,241,45,72,153,172,47,219,189,58,8,166,68,110,165,139,200,136,160,124,141,93,186,86,142,140,156,121,134,48,247,172,52,190,29,220,42,250,163,9,107,29,121,128,205,154,118,142,246,173,36,169,197,67,68,230,206,89,244,216,246,36,107,14,35,229,170,81,223,210,176,144,52,226,49,93,168,114,237,193,148,8,69,253,228,200,91,62,23,163,66,201,32,194,10,97,72,52,2,40,174,125,117,112,31,0,46,201,49,14,158,191,91,101,88,138,78,101,47,116,135,58,148,122,68,84,142,58,66,54,231,224,177,29,198,168,112,69,160,230,54,183,186,122,79,190,115,76,8,142,199,168,89,162,113,46,117,6,86,153,35,127,179,165,145,141,245,228,17,201,21,151,172,251,109,224,88,179,30,59,81,22,101,64,61,171,20,53,99,40,65,187,229,99,39,164,94,141,177,102,192,243,134,126,81,159,154,213,76,165,115,136,239,202,157,180,18, -44,131,0,138,227,40,214,21,36,113,153,80,115,226,234,83,28,164,190,195,147,159,89,101,97,120,47,176,81,60,43,207,83,162,98,64,189,90,141,228,108,235,229,109,227,173,140,80,54,28,36,41,219,122,97,177,27,97,218,252,150,124,186,184,171,110,198,119,80,90,114,225,80,155,26,99,12,205,174,164,41,39,116,101,171,115,152,227,88,16,56,236,76,59,197,227,184,18,62,109,129,34,116,223,89,0,171,201,102,79,143,54,67,45,72,217,111,213,230,100,187,219,73,73,39,178,159,237,52,166,48,134,37,71,174,177,134,122,92,119,55,47,184,56,176,157,34,139,55,90,77,109,80,107,149,109,165,250,246,89,52,9,207,104,245,151,6,72,194,47,157,177,143,118,231,229,6,211,18,63,75,23,161,150,67,3,102,84,247,145,137,138,29,117,154,74,239,175,214,182,169,198,0,84,18,1,37,20,56,75,51,46,214,81,187,161,180,202,80,26,178,58,166,194,73,252,200,221,113,196,68,129,57,95,97,201,32,67,200,205,65,210,167,39,211,162,196,205,102,51,178,43,54,37,76,59, -165,163,219,233,228,110,146,61,190,187,108,12,106,181,227,237,11,171,169,226,63,81,40,253,39,55,26,40,233,60,192,14,196,212,151,122,241,86,129,187,89,9,169,92,71,35,79,171,124,23,78,86,59,57,167,44,132,168,238,109,209,152,152,108,207,183,134,187,60,16,85,46,155,107,196,132,168,109,19,2,133,1,16,195,212,108,228,152,29,230,197,227,149,222,234,109,23,103,172,108,210,204,92,105,60,143,223,195,9,59,121,94,226,116,83,49,36,25,156,254,213,16,37,230,221,134,10,144,170,49,243,114,216,134,144,177,131,172,39,122,36,191,142,184,71,40,171,66,3,118,106,146,44,60,253,162,55,34,162,229,171,121,105,91,123,136,149,229,192,14,80,159,225,41,149,234,170,225,172,214,181,233,92,140,61,52,44,228,163,85,114,60,251,37,13,85,185,40,139,203,117,71,234,18,140,109,150,236,6,51,156,126,201,240,172,231,152,244,201,57,5,179,155,202,5,92,210,173,106,4,33,60,109,48,52,131,73,205,218,138,80,41,205,33,15,116,151,61,236,136,61,65,54,118,77,112, -173,109,116,81,60,73,84,127,27,243,198,58,141,76,7,49,207,17,246,219,253,179,85,109,147,144,17,66,90,181,138,13,217,11,244,72,245,240,181,196,36,217,139,87,17,161,184,75,233,129,170,75,67,159,115,236,70,201,118,59,177,214,110,20,106,105,106,227,28,28,201,182,115,161,4,110,147,78,202,176,233,14,242,72,171,18,233,220,197,71,194,14,3,123,23,2,194,35,110,110,241,13,227,108,111,212,140,4,121,125,142,171,170,76,177,76,21,51,189,148,241,229,55,119,148,137,81,23,84,233,194,205,10,12,183,121,5,239,132,251,199,39,62,241,57,238,122,210,189,117,224,92,155,20,74,54,231,44,200,202,16,254,70,234,188,16,228,41,175,18,104,189,64,76,8,51,25,2,25,1,184,200,37,180,107,118,56,159,206,110,196,225,112,152,196,186,148,158,159,179,14,77,103,185,171,117,36,211,7,237,244,99,72,205,249,53,68,74,10,22,49,80,101,3,92,130,170,132,54,130,37,36,96,231,125,146,121,227,58,30,36,240,60,67,105,77,24,98,234,105,119,30,136,187,122,27, -83,115,240,123,8,162,135,124,100,227,207,2,211,53,176,77,114,21,141,30,170,185,9,28,220,149,148,238,174,91,196,141,9,90,25,27,243,5,144,168,150,140,104,70,110,252,18,184,27,42,28,169,231,124,18,119,88,226,89,147,92,229,54,85,175,58,55,193,237,121,10,35,68,105,26,240,137,11,91,42,3,83,9,161,210,173,252,134,161,132,206,159,30,140,55,110,198,155,106,49,145,170,195,112,38,21,69,226,112,143,51,109,194,45,190,144,220,11,43,134,50,39,120,26,18,166,137,92,17,65,198,53,97,142,93,108,64,154,24,125,138,130,199,180,19,115,194,53,134,106,174,172,233,38,53,187,159,81,19,36,69,22,140,218,90,146,121,157,5,26,78,211,72,242,13,35,99,250,104,43,121,58,208,106,104,102,178,14,141,64,55,49,132,217,153,111,74,101,18,48,106,55,7,157,237,162,172,144,163,208,212,58,10,57,181,48,34,61,27,21,29,13,124,165,83,83,212,199,207,197,130,123,35,181,2,17,56,51,42,214,221,236,81,120,198,147,39,212,148,193,118,89,23,219,216,27, -11,138,137,189,116,176,215,186,201,72,225,199,216,125,100,95,46,13,173,55,9,226,16,17,36,51,35,129,72,173,150,102,129,176,68,18,65,247,243,80,18,145,220,167,113,59,226,219,110,110,116,183,78,37,32,89,49,235,154,109,51,67,217,62,236,74,81,220,172,84,1,65,231,242,17,186,228,52,149,162,149,243,171,4,176,186,27,233,238,111,111,223,145,108,53,59,228,166,103,130,221,96,212,88,95,96,92,171,129,26,224,168,204,28,211,222,157,17,140,208,83,122,31,45,86,166,230,217,82,89,143,9,226,45,168,217,198,188,64,104,172,155,3,180,53,248,221,58,166,144,38,203,144,125,188,4,127,225,153,248,69,4,102,143,220,177,67,61,112,231,52,56,36,42,130,24,159,104,235,226,14,86,64,193,157,138,116,14,156,28,118,218,98,171,116,183,222,109,106,133,230,134,70,151,30,5,13,103,114,89,130,16,137,101,226,173,26,248,202,131,182,41,57,92,165,164,87,215,154,224,84,169,134,236,15,40,3,140,139,179,97,209,119,30,80,232,197,78,77,137,9,51,97,6,211,243, -146,138,22,97,137,70,173,252,21,14,236,64,181,243,21,21,57,113,195,176,84,108,80,245,180,151,41,202,202,228,30,111,86,158,130,203,8,134,26,148,94,163,192,118,65,244,124,176,89,107,138,111,57,90,168,193,127,123,73,135,12,180,23,135,251,214,192,149,238,212,174,222,114,214,15,87,241,244,104,107,219,68,199,178,251,52,242,185,33,56,204,22,160,25,123,83,95,235,195,136,33,153,121,187,50,32,158,104,87,241,138,227,0,247,132,83,149,92,201,2,101,56,67,200,92,43,91,52,150,212,150,210,116,116,104,82,187,173,218,27,36,22,92,188,82,116,38,112,161,21,157,194,108,36,78,14,237,122,174,8,230,224,117,183,83,216,14,163,34,191,29,42,130,39,210,168,96,84,80,30,34,54,17,16,98,185,143,39,83,120,144,134,171,111,45,243,176,92,68,62,162,68,74,217,179,166,160,181,69,139,92,205,28,168,18,10,218,205,148,143,88,9,17,239,168,234,64,39,249,120,117,186,41,176,81,46,93,54,71,130,37,191,208,4,11,148,221,230,37,67,35,214,16,125,6,85, -45,211,22,28,66,202,165,18,211,100,186,217,29,117,106,205,243,170,224,92,145,229,250,44,135,14,139,145,205,49,132,39,99,130,180,233,228,240,144,169,213,116,159,121,35,12,21,41,165,178,163,232,50,213,195,189,66,103,236,78,141,149,125,169,143,31,218,221,222,78,11,210,123,87,124,111,63,233,26,93,171,72,40,17,223,152,166,204,189,13,108,42,183,177,157,90,191,212,239,55,211,91,50,79,163,76,216,236,8,55,25,14,229,154,33,199,89,79,9,28,176,75,116,50,197,231,70,210,193,72,104,150,114,96,92,103,72,152,17,91,48,30,216,6,179,234,198,206,169,57,123,68,60,73,135,247,84,87,70,133,117,96,80,232,112,182,83,181,110,29,133,107,72,172,39,209,200,106,171,205,184,10,159,154,167,221,195,125,236,65,210,114,202,37,157,94,49,46,103,150,189,160,165,232,98,10,124,153,200,112,211,116,91,100,76,169,99,157,149,188,41,32,72,149,93,8,247,144,142,81,233,134,182,13,221,241,229,170,198,59,192,113,14,116,51,23,122,125,210,63,206,37,15,101,157,131, -67,45,59,120,140,62,196,223,213,56,242,203,224,72,143,30,232,212,221,89,139,154,45,110,212,247,143,40,24,158,204,36,105,171,72,151,134,82,66,11,59,43,228,179,32,107,49,134,166,111,119,125,188,228,106,216,103,203,111,224,213,52,247,97,106,199,71,71,132,170,30,72,52,233,13,28,161,60,217,171,65,91,132,21,39,247,111,19,58,205,24,60,58,180,111,68,210,22,100,191,164,36,92,221,218,109,107,241,126,242,226,28,69,177,15,80,145,134,68,37,45,161,46,83,124,130,37,96,37,34,234,30,146,30,218,220,75,76,200,30,30,97,53,131,67,154,248,212,130,79,162,38,145,243,49,68,171,137,62,34,76,156,210,130,162,71,51,146,192,81,245,100,205,225,65,30,37,109,188,184,186,157,186,96,143,91,209,109,174,53,202,156,50,79,207,2,219,248,89,145,117,193,26,160,164,9,153,194,97,179,221,140,247,173,140,59,86,246,116,191,19,161,239,161,237,187,125,196,225,33,8,74,204,52,100,205,226,52,106,204,156,9,50,129,166,124,191,72,105,24,253,220,13,242,141,74, -108,198,223,157,181,242,222,211,252,248,224,114,56,15,19,88,146,154,233,54,125,123,97,112,167,199,65,131,202,235,54,38,139,232,22,161,202,147,184,240,119,16,52,20,6,193,66,220,243,113,140,131,220,229,67,219,222,17,15,202,36,104,215,210,96,54,235,188,221,131,178,33,105,48,157,205,106,15,160,108,36,239,6,109,217,184,150,209,183,248,8,111,215,131,71,88,100,171,192,104,195,99,195,67,143,199,215,117,249,182,160,138,128,59,96,108,2,42,133,240,148,96,55,102,180,5,62,22,129,59,123,27,4,83,249,128,191,55,7,165,193,132,43,207,6,222,51,31,219,37,184,118,118,12,181,227,108,168,73,188,8,72,173,30,184,176,93,207,189,30,71,19,146,154,69,16,130,113,77,87,192,118,98,226,59,246,86,1,66,111,121,104,226,223,143,136,222,242,98,84,60,180,1,226,231,30,124,5,97,28,3,234,220,106,96,236,181,118,7,202,174,224,111,48,150,141,92,1,137,178,176,199,180,190,93,168,54,144,250,230,182,138,95,189,62,105,137,171,61,71,238,56,112,233,202,236, -223,5,202,234,29,194,41,120,77,201,1,184,223,241,203,0,207,5,75,10,192,243,158,37,192,115,193,146,4,240,92,176,220,149,229,10,40,11,65,70,95,181,220,143,42,4,217,98,116,2,90,200,161,246,237,32,64,247,197,8,212,183,223,143,52,11,225,128,108,242,66,56,32,59,181,16,14,200,190,90,8,7,100,223,45,132,3,178,137,11,225,255,2,231,33,32,249,85,46,96,19,57,148,112,43,193,67,9,112,207,152,111,37,120,144,166,60,162,233,194,227,142,157,165,178,80,133,33,112,123,152,49,174,15,85,71,101,164,254,145,4,95,53,203,202,58,113,181,35,193,51,170,245,137,240,108,103,39,169,63,118,151,176,123,14,204,120,70,187,161,9,11,180,170,24,20,37,179,117,163,99,10,146,6,59,241,159,100,175,139,180,210,205,92,218,105,241,170,171,124,43,159,32,172,29,195,230,106,195,9,247,26,125,115,112,183,214,217,187,165,157,113,55,79,118,120,11,71,168,247,33,42,199,144,199,179,35,149,4,149,19,194,223,97,227,219,84,168,61,203,59,40,209,239,238,26, -107,144,32,129,139,51,38,60,115,143,31,204,171,174,77,13,29,104,125,126,5,185,44,92,96,236,119,5,212,228,194,188,112,15,198,21,90,232,219,41,229,125,185,59,233,156,191,163,213,173,115,93,104,99,192,131,228,223,168,1,180,23,174,155,2,124,119,225,186,40,48,193,19,112,166,16,200,197,226,183,252,154,224,1,47,22,129,53,62,20,0,7,248,88,48,129,206,104,219,245,45,128,78,51,216,69,52,240,192,73,101,200,12,48,171,204,211,96,251,59,179,115,21,21,217,180,99,128,9,186,221,172,117,238,132,121,115,52,198,10,136,235,107,236,26,186,121,103,103,136,184,40,77,134,134,210,205,25,38,62,146,221,142,38,151,65,104,142,224,113,18,188,176,202,54,14,81,193,237,29,207,247,234,182,172,11,176,145,65,120,77,67,92,22,142,169,156,126,196,59,39,242,89,80,2,23,177,227,225,193,198,150,30,151,232,65,42,39,151,215,114,7,242,10,124,43,4,52,219,33,59,85,248,131,227,249,58,228,218,141,228,239,5,77,224,60,143,118,55,96,178,237,194,107,22,141, -123,219,25,65,74,55,164,197,198,93,252,206,76,124,97,31,182,140,182,203,235,176,227,90,124,115,87,98,9,160,4,97,255,178,215,22,67,9,224,190,128,188,192,132,117,220,223,141,161,8,30,40,242,1,129,215,56,32,61,15,19,158,215,19,15,159,191,119,95,239,97,250,142,41,186,131,111,118,77,213,63,120,244,139,151,255,246,39,75,139,175,127,247,147,127,243,195,251,193,159,252,228,199,255,240,248,215,203,63,253,244,241,175,150,223,127,231,195,231,207,94,174,44,61,252,248,131,247,127,240,228,217,202,251,63,120,152,251,135,149,23,79,158,253,106,49,249,106,244,253,31,3,28,126,241,103,239,188,251,163,119,127,244,199,127,242,39,223,95,250,224,249,243,167,143,222,251,197,31,46,125,201,239,209,59,95,95,191,231,3,108,120,239,151,247,139,191,124,16,243,232,189,247,255,224,23,127,248,103,255,118,233,201,167,191,122,244,131,223,97,8,72,95,240,3,214,254,203,231,143,159,62,89,249,237,95,124,246,217,55,182,124,197,243,65,171,95,190,210,243,75,174,31,63,121,186, -252,179,199,159,46,47,232,190,189,233,126,203,242,111,0,14,239,255,175,239,189,255,189,247,191,247,253,5,36,127,252,147,251,35,188,124,80,112,233,23,255,230,135,175,245,3,84,186,231,248,122,238,75,238,75,95,60,89,249,100,233,227,231,47,62,125,188,242,122,113,193,247,71,75,63,253,120,49,88,122,242,114,105,193,255,7,75,43,159,44,191,222,7,204,173,60,254,167,101,128,229,139,231,159,126,155,37,64,182,252,236,229,147,231,207,126,244,74,169,87,59,190,6,198,61,11,128,225,171,169,165,119,0,206,75,255,231,103,191,250,254,18,240,189,88,248,224,201,202,203,165,207,150,95,44,125,246,228,55,203,79,31,214,159,3,11,47,94,233,240,242,251,63,126,139,83,252,61,128,208,202,119,120,197,239,126,188,221,25,190,226,243,47,230,13,191,185,55,215,47,128,209,187,111,221,243,219,127,198,158,47,158,124,180,242,201,253,190,159,125,254,244,233,219,118,125,178,252,228,87,159,172,124,185,237,181,135,220,159,235,37,160,231,27,92,228,195,231,207,95,124,244,242,71,175,167, -127,243,131,71,175,135,191,253,106,120,47,253,171,159,175,196,252,232,45,230,248,171,23,143,191,248,249,242,135,43,127,251,228,25,96,144,197,175,183,88,226,235,119,246,47,159,63,125,254,2,216,247,45,235,252,250,249,147,143,238,173,243,117,182,128,125,222,251,229,98,226,151,247,211,143,190,78,240,254,31,188,198,236,59,172,242,118,91,124,183,5,126,15,242,111,91,126,10,232,252,127,188,129,193,87,158,117,127,254,95,62,192,240,165,103,125,120,255,235,251,223,137,235,223,63,95,160,184,136,117,79,254,175,111,6,194,127,45,80,223,251,229,189,212,95,46,221,127,125,169,238,103,207,95,190,138,93,128,42,64,228,2,62,191,92,123,249,255,7,54,139,153,255,207,32,89,208,252,114,105,241,249,165,142,47,254,21,15,13,220,235,133,74,47,151,30,47,189,0,100,62,126,246,43,32,214,3,23,122,49,249,229,189,125,180,244,209,242,199,128,168,143,150,62,248,237,210,242,147,251,104,250,255,226,166,3,191,150,126,176,136,211,247,246,94,122,244,106,117,97,239,197,210,210,227,103, -31,61,186,55,247,107,186,87,243,0,197,2,143,47,9,94,188,226,116,159,129,22,16,188,186,85,175,201,190,66,101,193,242,225,236,175,215,30,142,254,187,49,103,233,1,136,167,239,254,228,199,63,7,8,158,127,250,96,221,119,94,89,247,155,32,2,198,253,218,182,71,239,188,198,241,231,203,43,159,191,120,118,143,228,253,242,131,172,183,133,183,255,180,188,242,243,199,79,158,125,240,252,139,87,210,190,74,42,111,16,248,141,221,191,155,88,190,242,135,95,63,126,250,71,255,254,209,155,20,186,167,125,208,232,33,249,62,126,6,208,125,246,249,202,130,230,243,47,17,127,96,240,176,227,221,165,119,126,190,252,209,247,151,86,158,47,189,251,155,191,1,254,188,1,181,87,7,89,92,144,111,230,204,135,159,175,238,206,235,131,253,110,230,123,117,176,133,175,255,115,50,229,27,175,205,243,23,79,190,153,55,191,34,127,227,101,250,54,60,47,63,255,224,33,171,125,180,252,244,201,167,79,86,30,28,253,222,231,190,116,185,55,20,46,247,162,191,195,190,127,191,168,64,222,94,75, -124,43,118,124,77,239,255,244,23,127,14,232,13,124,2,122,255,225,3,76,247,220,30,125,157,219,63,175,114,120,123,142,122,13,4,192,252,161,168,122,112,143,231,31,3,144,60,84,79,64,32,120,123,186,127,242,236,241,10,80,50,190,14,4,11,65,175,2,193,163,215,245,219,63,126,2,148,107,175,88,189,4,2,204,227,143,222,255,225,243,103,79,127,251,10,180,87,104,189,25,182,251,35,254,197,231,31,127,188,252,226,13,176,125,39,70,95,35,253,31,24,163,165,55,130,244,233,243,143,158,124,252,228,241,7,79,151,223,124,221,126,250,242,63,3,149,239,71,255,15,220,234,203,194,244,21,233,191,96,85,250,251,113,123,125,201,86,94,0,65,230,201,199,111,70,229,62,76,127,9,204,210,227,23,139,20,244,242,201,71,203,223,238,71,126,15,40,223,237,52,223,13,202,43,4,30,168,95,225,240,240,227,127,40,52,30,84,122,59,38,95,221,165,183,185,202,63,190,169,112,89,89,254,244,179,167,128,34,143,222,251,143,191,227,30,79,31,191,124,121,127,142,127,183,244,143, -143,254,244,189,127,105,199,122,224,251,122,114,229,173,72,125,118,95,50,188,58,244,202,125,27,248,207,115,145,55,192,241,13,39,249,87,132,227,159,239,82,255,66,56,124,167,115,44,253,215,255,250,71,239,2,127,254,236,143,150,126,241,242,93,160,187,254,195,165,191,123,232,140,63,127,246,225,10,208,118,191,124,244,232,191,255,247,175,161,247,16,143,255,250,55,192,223,229,15,63,95,89,4,165,247,223,249,157,199,144,55,61,48,44,125,147,230,30,136,183,62,68,124,43,194,126,246,226,249,175,94,60,254,20,24,63,94,1,42,187,167,79,151,158,127,6,100,94,32,35,3,85,232,227,207,159,174,60,188,40,60,121,10,92,154,251,18,240,203,103,131,223,121,135,88,176,125,247,225,28,192,215,15,255,219,47,254,151,165,191,254,205,99,192,170,203,63,126,244,106,18,152,250,225,127,251,166,182,239,188,255,189,79,86,62,125,250,254,247,128,34,227,135,127,186,244,254,247,254,230,201,139,229,143,159,255,230,71,203,191,89,126,255,123,143,222,158,238,255,234,197,147,95,47,255,237, -147,151,43,95,171,28,255,252,197,139,199,191,253,229,210,253,215,163,255,248,109,24,254,244,21,94,95,210,190,161,156,124,6,132,0,128,252,225,172,247,0,61,94,249,228,229,162,44,123,12,96,243,209,130,242,229,15,22,225,102,249,197,179,199,79,23,213,242,2,144,197,24,152,253,104,249,217,10,144,79,128,138,6,72,73,11,226,151,191,125,9,248,246,119,84,45,31,126,241,209,215,14,240,102,243,2,123,222,172,232,7,47,159,63,253,124,229,193,58,75,207,30,127,186,12,36,253,207,94,44,191,92,104,241,236,87,15,9,244,243,23,47,128,159,11,51,127,184,252,18,48,225,243,23,255,180,88,251,232,201,162,1,121,254,226,161,56,248,247,11,190,192,13,252,240,161,22,3,100,254,229,3,221,95,125,254,106,219,59,63,250,254,91,171,136,191,252,4,224,246,58,238,125,249,142,247,246,36,112,191,255,209,123,111,137,95,111,123,104,123,254,244,163,229,175,202,201,127,248,154,255,46,14,246,254,255,252,134,179,45,172,246,250,217,235,129,252,149,159,62,253,227,255,240,31,190, -125,219,95,126,254,225,130,213,199,159,63,125,19,40,255,240,6,80,190,255,29,150,253,171,229,151,255,180,242,252,179,255,253,241,51,32,82,188,248,217,242,23,191,215,206,223,162,248,202,234,127,14,84,42,47,22,229,208,226,70,1,22,255,245,242,139,251,43,8,84,70,223,34,124,7,128,250,241,75,64,105,96,29,88,252,187,151,63,125,246,241,243,183,171,250,179,191,251,217,251,239,253,252,175,255,250,103,255,248,243,63,255,217,63,190,255,222,127,190,215,241,15,151,190,53,255,232,205,4,239,252,250,213,177,190,73,2,4,162,251,38,231,75,155,253,116,5,240,207,7,200,95,55,64,143,22,184,223,7,152,87,65,113,233,147,199,47,151,62,88,6,34,208,135,192,125,251,218,69,90,120,247,202,39,139,162,246,62,99,63,89,185,223,249,236,249,107,158,192,214,223,46,175,252,142,125,127,122,255,4,250,249,203,101,192,162,247,23,120,241,92,0,84,146,95,202,2,230,62,88,126,45,104,229,139,39,31,222,55,227,64,69,8,68,245,197,165,121,249,100,229,243,199,247,161,250, -7,139,247,76,224,166,63,68,180,7,33,255,211,189,148,39,127,244,39,239,254,228,239,222,93,20,150,95,59,197,130,231,203,165,191,92,121,241,244,253,31,255,248,239,31,92,244,175,127,13,240,124,249,206,247,127,178,120,179,253,206,51,127,241,9,48,126,188,244,193,231,43,43,95,95,93,92,109,192,174,139,55,94,224,92,175,86,63,4,2,193,7,203,175,215,150,30,255,10,104,62,151,94,62,255,93,1,175,54,125,253,164,63,250,253,135,0,132,188,162,0,220,255,47,63,121,242,244,163,191,125,254,114,229,111,158,127,248,57,112,138,215,86,88,100,139,69,87,247,108,249,11,32,102,2,157,248,23,0,226,128,83,255,96,233,233,226,138,190,124,252,219,31,44,1,0,124,250,217,202,223,253,111,128,19,62,212,223,95,60,254,38,195,135,212,243,13,29,127,252,96,250,101,32,56,44,188,121,25,88,255,240,49,96,207,175,49,92,250,20,104,20,95,190,202,81,203,79,63,90,216,244,233,243,231,47,151,95,61,132,3,172,95,231,166,71,255,55,105,69,244,226, +120,156,236,188,249,87,98,105,126,48,254,175,120,38,111,230,219,157,212,212,212,218,107,222,247,204,100,150,100,206,59,201,204,153,238,188,223,31,58,213,93,118,21,213,109,166,170,172,168,53,221,157,188,201,97,149,125,19,4,68,17,16,4,113,5,69,69,68,89,5,193,5,220,17,149,77,101,113,97,17,69,118,190,247,94,92,176,74,171,171,122,58,147,124,207,137,167,78,113,185,247,249,124,158,207,246,124,182,231,185,124,114,171,226,127,252,143,27,215,110,252,217,141,111,249,251,224,231,176,71,149,207,31,215,221,251,164,234,206,157,247,62,172,188,117,247,195,223,255,239,223,188,255,33,8,127,19,128,191,253,238,205,219,239,221,189,125,243,206,173,119,128,255,110,222,190,121,235,238,173,219,119,110,190,119,235,253,59,239,221,190,253,222,141,15,30,60,174,172,173,189,247,201,227,91,239,189,7,1,221,2,128,110,189,123,247,214,205,119,239,188,119,231,189,155,183,223,125,239,22,0,123,235,198,141,91,55,222,189,117,247,230,157,219,239,221,186,251,193,67,88,237,131,123,159,220, +0,134,223,6,134,191,255,206,237,247,111,220,188,113,227,221,155,55,111,220,190,245,238,141,219,119,239,220,188,121,251,22,128,226,214,187,183,110,222,184,251,1,236,233,195,123,159,252,237,59,31,130,0,119,64,166,238,190,3,144,254,14,128,237,206,157,27,0,118,16,236,206,237,155,183,111,220,186,125,247,230,251,119,223,249,224,115,216,23,85,79,47,99,233,238,183,178,244,238,141,15,170,234,96,79,78,56,170,188,243,225,95,252,228,238,135,55,1,208,119,174,189,243,103,239,2,211,222,185,11,76,246,62,200,209,109,0,236,214,173,119,238,190,127,243,238,29,128,164,59,55,110,125,80,3,251,231,231,85,53,176,39,176,167,117,39,24,170,110,222,188,117,243,195,207,111,190,251,33,64,194,191,255,251,191,95,191,121,231,70,73,82,239,2,180,220,188,1,208,125,235,38,112,15,224,227,221,155,119,223,191,241,254,221,247,110,190,119,227,246,187,119,110,221,125,23,96,253,89,101,77,229,147,19,78,62,191,115,235,195,19,62,222,187,246,222,159,189,115,243,29,64,162,55,222,3, +232,191,251,62,128,224,6,192,4,240,9,8,242,46,240,239,246,123,31,212,157,0,131,112,32,208,251,215,222,255,51,64,72,183,239,222,120,247,253,27,239,222,121,247,238,29,128,147,91,55,223,185,9,8,242,6,200,63,160,134,15,158,86,215,60,169,124,124,239,147,127,253,236,223,254,252,23,127,255,163,127,248,168,226,147,138,127,253,215,155,160,173,252,228,45,64,45,215,239,220,186,126,227,237,138,79,106,111,124,88,241,201,95,252,228,221,15,239,84,252,242,249,211,7,117,85,213,79,107,239,252,195,245,138,223,193,30,193,106,96,79,31,192,238,221,251,183,127,251,225,61,112,220,95,252,228,54,48,170,116,93,241,235,170,218,186,138,234,71,21,143,78,129,42,170,158,86,60,171,124,240,251,202,47,96,215,79,198,0,31,103,115,222,60,157,170,226,119,207,159,62,173,122,250,69,197,163,170,199,176,218,138,202,167,15,43,30,84,63,121,2,124,214,158,78,117,231,195,63,255,17,52,207,221,15,63,248,117,37,48,193,151,191,4,198,222,127,235,1,48,77,93,197,131,47,43, +107,238,255,197,253,183,63,0,6,125,242,147,183,110,92,191,113,29,144,220,219,21,159,87,87,63,190,247,25,48,193,57,200,189,183,202,7,64,224,192,136,242,91,0,174,123,159,221,255,11,64,2,183,33,130,238,189,13,206,123,235,195,138,223,60,131,1,60,213,125,9,131,110,87,124,242,231,63,58,29,82,113,239,171,170,186,47,161,71,149,15,97,15,158,87,214,193,30,86,60,171,169,254,2,80,82,197,67,216,163,170,167,192,119,64,24,224,128,223,124,84,241,249,55,224,77,112,109,150,137,5,248,128,172,170,226,147,31,87,252,226,235,202,39,207,30,195,62,184,247,194,253,115,54,222,186,255,131,7,31,220,255,199,251,255,248,119,223,84,212,62,171,129,85,62,172,253,18,6,171,187,94,247,117,221,253,31,188,125,189,226,87,117,21,95,85,61,126,92,81,13,208,124,58,217,25,69,111,61,174,250,61,172,226,11,216,195,42,64,95,53,21,79,171,235,96,207,42,31,190,93,1,49,241,176,250,193,115,208,200,43,238,255,224,50,220,215,33,154,110,159,146,124,133,66,65, +18,43,254,22,80,224,99,64,173,231,58,60,213,32,248,248,103,149,117,47,168,239,218,107,42,243,4,250,59,104,242,90,197,155,128,84,62,3,132,247,240,151,229,38,240,83,232,22,96,162,117,144,46,129,107,208,224,203,44,225,30,116,31,192,92,7,136,176,22,90,13,101,182,82,134,241,250,69,40,72,89,159,195,42,158,84,63,172,122,84,5,88,11,184,8,94,130,2,237,12,24,7,120,161,74,192,154,64,91,168,124,10,168,241,122,185,153,252,14,86,247,188,6,180,211,154,231,48,208,230,30,84,214,194,64,58,106,159,63,120,0,171,173,189,94,166,190,242,69,5,162,255,168,174,166,196,224,31,161,152,51,28,255,225,234,169,173,171,121,83,189,212,193,190,174,59,189,11,130,191,177,224,202,37,246,211,51,181,252,125,229,147,51,87,4,240,15,152,252,253,31,190,32,180,203,68,248,217,167,165,193,159,158,0,65,50,188,136,245,114,33,190,4,88,62,232,254,15,65,60,0,131,207,42,235,190,188,249,134,50,5,97,110,125,7,152,219,103,154,248,53,232,90,46,50,241, +22,96,34,207,235,42,254,169,186,10,114,242,117,95,214,192,96,16,84,237,245,138,43,172,241,111,96,117,255,0,224,168,249,101,245,227,135,176,154,75,221,252,165,210,187,8,247,134,38,8,193,64,82,63,101,230,204,36,0,219,121,10,60,0,205,1,242,255,208,208,138,234,63,0,255,157,26,217,57,244,85,75,236,219,56,186,108,73,125,111,220,92,110,229,16,59,53,192,5,176,116,190,141,43,48,166,60,172,6,226,51,16,47,128,185,96,15,126,15,194,191,60,176,2,246,53,144,8,188,210,209,252,14,86,249,184,124,209,124,187,98,203,161,222,76,16,160,161,93,170,80,32,176,61,62,211,234,9,27,208,224,235,111,61,4,18,189,7,117,213,53,223,128,225,17,116,31,39,177,17,2,171,250,226,203,186,138,199,176,186,58,64,76,160,143,168,5,7,221,255,193,253,31,148,137,163,132,231,76,90,144,68,174,18,8,96,179,127,15,248,165,75,13,227,181,221,198,5,36,223,197,82,222,112,209,3,165,193,233,100,167,178,253,25,0,82,5,220,0,215,248,5,171,168,184,87, +9,154,23,144,178,130,105,197,169,149,157,201,170,12,213,181,10,32,35,169,41,211,209,201,224,231,79,31,190,104,147,21,247,234,190,4,188,61,104,184,143,107,171,79,145,95,138,245,250,9,129,191,4,244,4,59,201,172,46,10,12,200,166,126,252,101,53,96,143,63,184,86,113,114,249,227,231,181,176,154,31,159,38,67,181,64,82,117,70,88,249,8,32,33,186,66,173,63,3,236,171,14,86,194,255,115,24,236,217,107,47,249,23,1,223,76,155,128,233,222,123,27,76,223,223,169,248,249,47,126,251,187,95,252,236,167,31,255,226,231,247,78,85,4,161,174,61,21,225,137,168,64,144,107,21,15,192,103,160,238,170,128,220,165,230,9,144,28,2,67,79,70,214,130,166,253,20,6,134,193,202,154,111,46,68,205,143,158,3,14,170,22,246,16,72,89,128,180,246,103,213,128,51,1,215,105,213,191,192,126,11,172,129,183,222,126,133,23,248,89,245,19,80,109,111,150,108,0,212,157,39,129,37,4,111,238,15,190,91,88,60,55,116,104,218,218,147,114,165,108,201,223,188,87,158,183, +149,160,74,49,14,0,251,213,153,105,127,80,186,83,117,243,238,141,15,127,3,36,204,247,127,116,235,220,21,3,152,193,68,253,243,199,176,39,181,80,250,14,234,4,176,92,48,15,135,106,164,154,234,39,103,69,72,237,245,151,80,221,4,81,157,20,82,0,42,32,157,132,170,182,186,23,71,190,48,14,168,110,43,31,95,237,179,159,62,44,57,155,95,61,189,164,238,186,118,33,245,185,6,168,232,157,59,103,206,10,250,246,105,5,244,113,162,185,139,200,190,183,68,241,50,199,8,64,128,73,31,8,241,50,41,160,142,170,107,111,0,184,255,39,48,225,237,138,27,103,42,254,8,86,89,243,224,75,48,11,188,144,67,62,2,244,80,91,87,238,225,32,228,37,157,124,254,13,176,94,0,124,85,96,237,123,102,3,32,254,75,76,160,226,123,49,129,114,226,174,176,132,11,116,86,149,194,209,163,106,192,161,190,200,220,139,240,63,125,90,18,84,197,31,42,31,67,9,241,195,170,7,37,7,1,206,12,49,251,21,68,237,139,51,64,216,95,17,236,126,126,26,92,127,13,123, +250,69,221,151,87,228,0,39,186,2,242,159,251,31,124,112,110,60,47,195,191,177,123,44,1,95,153,231,213,2,174,11,148,13,200,97,237,105,194,87,251,252,9,120,89,9,20,95,80,61,7,14,170,189,24,150,46,98,126,5,255,223,145,237,239,194,45,72,43,32,174,87,243,122,177,80,58,29,94,238,228,207,108,226,87,143,192,0,93,74,22,129,177,23,194,117,21,80,238,130,248,190,21,16,138,40,47,69,250,239,42,246,151,104,190,125,42,237,114,177,159,217,204,207,170,159,125,243,29,171,219,11,56,222,60,40,191,89,196,121,10,251,234,183,143,43,31,192,202,130,206,179,111,46,137,219,128,200,30,60,126,14,121,133,83,41,149,26,104,167,129,187,174,250,116,248,25,202,239,163,93,240,17,172,14,8,243,15,127,243,244,241,75,226,4,5,246,10,49,150,65,126,135,68,254,218,165,72,129,167,53,167,56,207,93,120,221,133,216,92,113,239,45,200,134,192,140,30,146,205,219,21,64,90,10,130,85,84,3,112,224,253,175,106,170,64,23,14,100,63,85,117,96,7,239,33, +12,44,99,33,231,91,234,221,149,92,97,245,163,19,180,231,147,94,16,233,175,158,2,85,240,211,231,95,67,32,16,182,218,90,168,29,10,250,245,90,88,29,20,70,192,228,241,90,197,23,53,213,207,159,65,250,170,6,93,255,105,56,175,248,209,255,253,15,210,75,249,255,127,114,29,129,60,95,253,20,146,197,213,143,75,2,186,82,189,247,78,191,124,7,61,3,250,56,5,62,37,177,244,181,164,158,123,101,57,221,9,21,167,125,219,55,212,211,153,59,130,1,245,99,89,138,255,255,86,61,126,248,160,178,230,97,237,107,23,9,87,98,248,14,213,66,73,162,224,76,127,254,231,39,136,203,156,73,201,219,222,59,29,14,92,1,163,78,28,17,84,130,61,0,210,97,64,174,39,125,207,135,165,244,7,144,196,87,167,36,157,248,168,82,11,252,12,209,245,123,223,217,13,157,27,59,152,165,149,18,210,211,228,243,197,207,159,214,212,84,126,115,255,175,78,190,254,175,251,63,60,11,181,208,147,79,43,160,143,123,127,245,114,246,248,191,74,43,225,116,10,64,176,87,36,152, +39,222,253,138,167,160,76,126,121,146,180,126,107,134,250,237,52,221,255,33,4,2,171,169,169,174,1,55,92,94,138,235,149,79,75,224,160,244,74,80,181,80,63,186,242,180,251,118,178,125,1,118,62,106,75,109,141,71,207,1,109,67,62,242,180,191,85,166,249,75,98,78,185,218,33,4,231,122,127,11,250,126,166,250,183,79,225,206,164,0,57,187,19,4,16,81,128,182,193,182,193,75,253,89,72,40,167,254,240,228,222,57,215,167,208,165,228,1,186,255,10,159,248,173,102,242,95,212,38,192,194,4,236,44,253,255,75,199,37,135,249,102,58,126,81,109,55,62,252,224,215,213,149,16,186,251,159,125,84,249,232,92,117,175,104,130,93,132,184,90,57,143,78,187,235,103,193,4,236,2,2,81,226,20,193,91,101,201,101,105,32,212,193,6,82,214,175,170,107,126,15,237,107,254,22,40,244,190,134,34,249,73,206,245,188,174,250,9,80,31,61,0,60,231,55,21,95,192,158,194,106,160,93,192,207,191,57,217,245,187,108,171,239,31,238,255,229,253,191,60,159,245,237,178,173,211, +103,53,85,0,110,32,123,123,92,93,42,250,206,148,10,84,5,213,64,30,93,226,8,72,33,96,165,61,143,199,80,125,80,174,93,16,250,97,213,19,216,83,48,251,128,238,150,96,74,170,129,118,146,78,129,193,225,215,43,62,254,18,200,208,79,106,68,32,213,169,130,34,35,184,97,121,206,206,31,170,106,234,158,87,158,198,134,82,1,120,54,223,9,9,165,180,190,156,119,16,233,141,138,183,30,157,55,224,46,51,191,31,3,53,239,3,80,182,80,246,116,161,107,125,81,179,128,160,254,233,57,16,37,203,169,63,41,28,46,153,251,249,211,186,170,199,231,227,96,103,197,233,89,157,80,222,148,250,184,250,227,154,202,218,47,255,186,234,233,183,197,226,63,84,87,61,60,107,69,157,131,253,17,221,233,82,236,173,189,176,101,88,234,36,3,220,212,158,164,162,128,17,2,122,5,217,129,102,172,0,166,188,202,241,157,146,4,84,143,63,3,138,242,186,251,111,93,221,149,121,113,236,189,183,46,221,4,121,254,228,243,82,243,22,60,73,81,91,241,214,121,193,113,90,255,86, +193,0,143,240,184,250,1,100,46,39,123,222,47,82,122,73,133,118,58,255,207,30,3,222,245,140,208,203,196,125,97,228,9,153,55,64,50,159,84,255,1,164,229,113,73,217,223,145,64,163,244,117,246,183,79,22,210,217,114,125,121,139,251,227,154,170,39,47,237,9,190,194,119,129,227,255,152,221,190,218,139,59,112,32,186,191,174,6,27,176,39,149,118,73,56,143,97,143,234,32,97,148,118,49,106,159,1,245,96,109,89,39,8,200,108,43,62,42,221,4,139,21,208,84,1,32,0,225,181,138,251,255,15,240,15,252,184,255,143,117,167,23,79,193,139,235,215,175,180,191,234,223,195,158,2,37,251,85,123,163,231,223,1,59,252,22,241,156,160,122,77,17,157,166,73,224,38,239,235,54,11,79,64,234,192,153,94,0,130,154,206,39,207,159,85,159,139,26,108,101,158,44,12,48,170,65,160,229,210,4,102,175,128,14,44,61,61,107,219,157,247,5,207,143,0,148,166,44,181,71,202,93,244,121,142,83,66,252,16,6,184,178,71,85,224,190,19,168,152,203,235,248,115,55,15,205, +7,216,59,48,63,224,177,203,38,62,117,32,32,150,138,202,71,117,144,11,6,91,130,165,121,192,234,244,204,103,158,108,165,151,161,5,183,2,170,95,226,245,156,135,82,255,239,194,124,192,221,231,207,30,66,11,238,100,106,72,94,101,243,159,249,237,210,36,87,89,20,88,149,254,236,163,255,243,130,65,93,131,92,116,121,81,251,217,167,255,7,90,235,159,86,148,62,161,92,238,133,91,159,65,247,192,138,30,184,5,126,0,217,29,148,223,157,76,242,186,166,118,106,104,167,9,221,75,174,190,52,0,6,30,217,2,231,125,69,11,3,92,164,191,131,61,3,55,105,30,150,37,246,64,233,90,89,113,253,65,237,31,78,19,128,83,85,156,219,89,41,183,190,208,144,61,159,17,168,166,158,130,135,75,78,78,34,157,38,213,191,58,107,252,93,156,25,220,90,3,116,91,115,250,181,166,250,171,218,179,3,42,15,161,24,245,240,242,130,236,119,176,63,128,155,65,224,178,120,189,53,127,229,246,78,25,166,63,206,43,190,230,234,191,20,186,174,26,154,255,18,95,80,74,35,129, +245,117,201,222,1,8,115,193,165,150,47,158,179,213,2,97,46,115,14,101,221,120,112,217,222,171,2,21,0,201,0,88,143,64,118,116,170,180,143,170,158,84,61,174,132,50,67,16,197,201,217,138,90,168,36,185,176,55,240,210,194,189,114,115,7,60,22,88,247,235,106,64,43,111,61,174,126,117,134,125,62,246,162,86,64,184,19,169,84,94,218,105,6,7,156,102,15,167,199,154,42,238,1,234,0,88,44,197,225,178,164,246,234,66,14,44,49,106,63,174,62,49,162,183,30,86,63,255,28,72,10,47,174,252,75,200,126,1,240,34,237,37,36,103,203,20,26,249,138,30,214,211,170,186,218,19,173,159,15,120,84,249,184,182,188,87,11,177,5,213,105,149,79,192,108,170,172,201,126,58,67,69,25,195,96,158,13,200,21,20,4,80,133,252,237,223,126,240,119,127,247,193,71,31,157,55,153,206,87,42,52,61,96,29,39,157,18,80,180,165,91,111,125,89,253,188,166,246,90,197,19,32,94,92,59,157,228,237,179,101,11,184,130,186,83,115,0,171,174,50,220,80,95,190,250,25, +180,115,5,213,12,37,154,0,97,149,144,92,185,135,251,194,184,23,42,180,75,37,252,34,238,171,107,180,242,211,93,231,242,124,217,241,85,220,187,84,118,37,233,158,69,149,115,45,156,72,230,149,252,95,180,150,43,249,255,219,191,251,232,220,20,65,111,6,185,180,107,175,107,148,101,224,23,13,242,220,195,128,58,189,210,253,0,154,126,225,217,119,176,228,138,123,175,180,228,179,134,195,169,224,203,186,12,39,58,56,165,177,244,237,9,216,226,43,235,151,158,80,113,133,150,46,182,205,255,83,140,28,208,194,91,111,151,215,230,151,89,56,48,232,188,117,84,202,85,79,63,78,180,253,195,87,20,44,101,88,94,209,48,122,14,196,234,87,164,157,87,153,194,201,227,171,141,225,52,19,62,49,135,83,205,254,10,74,47,47,95,86,16,45,175,88,88,96,221,253,38,218,191,247,42,69,148,45,131,23,86,218,169,22,254,26,172,236,207,87,218,243,210,249,130,111,93,95,23,192,32,193,63,63,169,122,159,151,159,0,128,250,6,215,42,238,149,61,127,201,221,191,150,99,47,53, +32,238,65,142,167,246,203,234,154,211,92,231,250,139,150,13,229,195,160,101,95,3,45,245,155,146,249,130,135,124,129,176,14,157,204,6,164,120,243,214,237,235,119,42,254,247,231,87,187,222,143,171,63,174,186,242,4,29,248,232,211,138,251,31,124,0,94,156,26,97,9,226,205,250,19,181,47,108,15,64,197,229,189,215,198,112,213,180,128,227,126,254,160,148,136,149,72,45,109,120,67,3,47,77,197,94,204,194,94,131,238,107,80,102,84,10,1,160,113,151,234,255,199,223,0,234,1,231,185,50,201,0,41,254,57,144,248,94,33,90,240,17,36,90,240,226,92,180,208,183,63,189,104,95,158,246,10,209,66,3,255,4,162,5,231,121,117,166,249,115,200,49,253,244,33,216,194,59,79,225,78,62,191,53,247,44,135,126,69,30,247,34,83,23,30,214,128,167,230,95,138,113,23,179,211,135,247,202,82,114,8,160,60,93,189,208,129,173,173,46,149,235,85,117,21,95,86,214,150,29,18,61,239,150,61,4,138,240,186,139,5,59,212,108,61,109,32,1,158,178,6,236,207,0,120,1, +215,241,213,9,36,212,153,249,162,166,242,217,151,21,149,95,87,213,158,239,19,87,0,69,24,116,44,177,52,241,201,171,73,103,208,32,5,128,43,174,122,242,252,201,9,37,255,252,188,18,168,232,235,190,57,167,165,84,40,84,158,8,230,234,122,27,44,12,127,250,224,1,116,6,242,53,90,240,23,0,94,47,187,59,149,127,121,78,119,254,58,13,132,9,144,56,104,130,149,15,234,64,161,212,62,255,188,22,96,230,57,120,251,108,224,147,106,96,169,2,78,180,166,250,235,170,39,149,165,160,245,160,170,170,12,238,197,100,3,132,58,235,142,156,156,231,133,26,21,207,96,53,224,246,227,181,82,117,6,134,199,175,128,18,236,100,227,10,118,18,212,202,32,30,87,127,117,10,81,58,180,114,78,222,163,170,154,218,179,195,194,167,105,202,217,12,47,162,60,29,112,134,240,2,201,63,125,122,46,141,179,227,199,80,93,255,146,64,170,159,66,251,223,181,213,79,96,87,9,160,236,48,108,197,253,31,24,49,53,95,62,175,173,48,114,0,114,1,36,70,58,64,153,81,93,241, +160,198,216,1,160,248,188,198,56,250,216,40,131,129,71,156,107,43,202,139,54,0,244,167,149,16,232,111,96,37,208,191,7,32,159,131,135,73,33,184,231,143,97,0,212,21,237,246,95,213,254,22,52,255,231,149,224,10,184,255,214,87,144,163,189,122,203,251,194,112,200,180,32,136,79,43,190,42,107,179,60,120,185,250,60,57,232,126,186,73,5,229,149,149,21,207,206,113,157,139,232,234,246,244,239,96,207,192,179,51,223,186,129,120,233,146,128,64,95,189,24,174,222,8,124,116,210,130,184,226,113,205,9,246,23,14,249,67,55,107,95,236,69,66,134,114,225,128,54,212,133,128,108,230,172,21,84,194,119,122,206,17,220,179,129,90,234,85,79,206,207,186,150,192,78,70,148,50,151,43,119,95,95,146,92,169,89,87,166,236,63,74,106,151,119,219,30,189,220,183,41,123,122,65,102,183,174,22,23,212,159,252,118,73,65,195,94,33,167,82,155,243,101,41,93,189,187,240,12,246,160,10,220,100,43,157,225,186,236,29,200,191,129,213,125,12,123,242,236,244,165,129,111,121,53,224, +124,232,249,182,206,223,192,234,74,177,234,244,237,192,58,96,208,201,182,220,201,134,28,184,247,116,113,73,92,73,242,223,85,66,123,204,87,110,135,124,84,245,5,176,196,63,126,121,121,131,179,62,134,50,169,191,186,160,45,232,221,99,80,93,119,42,62,6,183,221,47,233,17,130,56,1,251,40,13,121,161,249,116,146,83,93,60,236,248,197,83,48,254,149,78,160,84,126,112,114,40,254,252,192,236,95,150,31,152,173,188,119,29,116,118,165,243,188,127,128,189,48,246,198,133,145,208,246,230,139,216,126,116,243,165,49,79,97,95,84,130,200,174,90,42,63,5,252,106,229,23,48,80,78,215,254,8,81,157,9,164,226,4,225,75,66,186,86,113,225,198,231,151,182,236,42,75,192,101,21,78,229,133,227,237,159,95,121,200,245,34,31,127,98,86,94,184,113,73,64,184,130,183,107,231,140,149,179,249,224,245,217,252,207,230,244,133,27,15,191,11,235,215,206,249,46,151,194,195,43,165,240,172,250,171,91,127,212,202,62,231,28,68,117,213,130,174,248,93,101,85,237,185,103,173,132, +250,167,183,174,151,247,195,107,255,185,230,164,149,115,57,153,183,191,63,50,111,191,17,153,183,95,65,212,157,239,143,168,59,111,68,212,157,171,136,122,114,126,244,225,227,243,125,155,23,46,191,15,63,126,90,104,150,158,189,92,155,66,77,173,75,75,234,171,32,78,141,249,205,64,62,127,115,144,203,189,10,216,254,58,61,34,252,71,248,149,215,82,192,127,235,226,135,229,126,239,205,64,46,247,140,223,170,190,55,246,141,79,42,191,254,175,178,148,42,191,254,47,171,190,75,117,81,249,245,247,178,148,94,71,1,255,173,139,239,127,41,125,155,250,222,120,41,253,53,172,238,43,24,236,79,20,153,206,122,14,39,179,190,177,186,0,222,223,92,148,47,239,225,188,14,16,96,76,223,210,242,0,137,1,203,143,207,75,204,148,109,214,92,144,61,136,233,202,84,247,233,23,96,211,245,225,237,119,110,124,143,213,201,57,210,23,51,23,160,116,125,33,153,5,153,56,251,181,143,135,15,107,47,48,119,254,146,19,8,89,81,87,249,123,104,175,178,18,58,156,10,53,72,107,193,10, +183,76,6,55,32,206,111,191,115,215,160,190,138,231,159,87,213,214,85,62,125,0,251,79,118,32,159,65,175,158,149,72,121,99,59,252,250,170,55,157,95,1,243,205,119,128,249,250,170,31,13,121,213,60,183,46,117,29,15,79,120,173,120,235,147,79,191,172,171,123,118,255,131,251,63,190,255,99,96,229,95,255,170,234,247,85,207,192,247,210,239,95,175,174,249,226,254,143,193,239,247,127,252,139,231,15,30,87,61,132,85,62,189,255,217,41,232,167,21,176,211,155,224,201,237,19,149,159,30,234,46,201,164,116,13,240,250,54,100,9,103,15,111,149,61,4,8,124,93,227,248,109,53,184,31,252,217,253,191,250,24,122,199,228,218,165,119,255,51,140,227,179,79,79,136,248,244,148,154,123,127,117,138,248,254,15,75,154,120,118,149,198,95,11,248,79,172,198,211,115,133,47,188,107,127,235,74,223,245,157,214,241,127,175,238,50,152,127,249,211,121,132,55,167,237,191,134,23,57,189,4,68,245,246,181,87,121,148,179,235,127,121,133,119,129,34,227,127,90,220,185,116,219,180,20,173, +255,203,154,232,247,24,128,42,65,70,255,99,162,198,5,189,254,201,67,198,27,235,245,79,31,59,46,81,192,27,251,251,223,60,124,88,58,142,119,245,86,34,48,228,170,35,119,229,121,230,213,249,52,180,137,88,253,240,202,159,185,248,197,31,192,82,229,213,68,128,99,190,7,42,96,0,154,43,247,222,192,163,248,175,160,229,236,180,245,233,184,55,161,167,156,142,26,16,193,249,233,126,104,135,27,162,236,236,12,68,13,248,3,17,176,199,143,64,14,74,63,5,241,42,194,63,174,254,93,229,195,179,195,33,175,58,80,10,141,124,197,65,16,200,152,174,162,189,100,105,224,89,235,135,176,47,106,96,176,242,205,109,128,149,154,74,32,76,60,189,226,229,227,143,171,127,14,251,226,53,73,4,70,190,30,137,47,190,205,241,18,157,39,36,93,164,243,132,248,50,58,47,217,161,251,27,240,28,9,248,122,226,101,219,116,229,63,245,83,247,171,167,191,172,41,255,69,67,240,13,158,23,221,212,197,155,223,217,75,125,246,233,239,96,15,32,31,81,250,60,119,17,159,65,47,214, +157,210,114,229,59,0,16,25,159,158,144,83,6,125,114,234,241,17,4,124,229,59,0,223,2,93,253,249,63,1,84,93,241,227,113,15,234,74,90,1,148,82,9,81,15,106,226,17,104,218,165,119,93,207,78,243,67,191,137,87,246,107,61,37,172,21,247,192,223,240,44,127,99,183,178,246,25,120,191,6,60,147,112,241,101,209,255,89,241,147,159,84,61,169,252,2,246,193,237,91,239,188,247,195,91,55,110,191,11,71,17,145,102,4,252,244,47,133,109,217,27,195,30,251,87,179,13,189,249,226,218,122,152,26,14,71,58,15,109,233,145,40,89,176,53,118,204,226,32,14,38,39,225,186,84,32,138,209,88,23,18,210,166,8,59,192,55,234,37,202,209,236,120,88,214,25,156,179,100,86,122,209,49,164,65,220,202,163,103,45,235,237,235,147,12,201,12,87,201,10,207,139,173,192,213,42,87,9,93,109,129,55,129,171,6,43,244,56,60,85,122,204,237,46,61,150,244,151,30,91,79,30,207,183,151,30,255,135,227,113,91,179,168,213,98,90,95,84,106,243,233,108,161,232,76,247, +66,207,163,201,209,126,190,94,71,149,68,115,137,89,183,95,7,193,21,116,73,29,117,100,31,143,11,207,147,197,214,172,103,83,203,15,232,53,76,118,38,108,153,145,14,23,244,137,177,177,181,21,145,103,236,208,97,55,187,139,161,85,119,102,187,11,154,118,31,59,156,76,192,83,97,115,223,113,58,33,29,78,141,194,67,41,22,218,62,190,66,45,142,196,230,183,181,217,227,121,27,68,230,210,81,107,38,80,92,28,45,172,109,172,105,142,118,236,252,158,93,105,62,57,53,92,156,10,91,248,26,78,120,126,31,64,151,220,204,42,24,198,92,16,238,231,103,38,155,180,120,38,31,229,111,95,181,208,64,4,164,176,118,200,51,32,40,44,20,132,5,18,46,200,63,152,131,216,204,203,156,98,1,72,137,123,198,53,144,236,35,227,120,236,214,173,213,21,193,204,8,248,88,153,164,30,34,12,99,230,221,246,65,109,18,53,154,75,141,184,249,153,165,5,105,202,130,88,136,31,234,221,153,205,246,215,149,247,18,120,147,60,19,105,24,108,128,110,216,237,220,117,106,231,12,87, +12,60,115,247,91,113,73,8,44,217,48,105,53,67,134,34,82,178,167,251,13,92,37,40,245,177,173,6,250,137,188,218,165,12,18,196,15,51,220,215,180,133,86,134,25,192,253,172,85,44,42,233,211,53,69,147,52,9,65,252,86,8,107,120,158,7,97,181,154,15,74,230,199,158,132,176,134,231,119,33,172,243,226,29,8,43,131,132,135,176,134,251,182,33,172,243,226,18,86,177,21,15,97,149,52,137,33,172,0,82,8,171,216,106,129,176,78,50,90,32,172,211,253,7,16,86,241,152,11,194,106,101,168,33,172,52,73,27,132,181,105,171,9,194,106,205,174,2,88,221,235,174,96,80,211,61,148,94,180,32,3,43,218,208,96,119,90,157,89,206,141,117,21,198,7,25,58,184,76,174,162,111,121,201,107,134,133,81,58,166,152,231,88,233,45,171,100,27,133,139,84,167,237,11,107,204,174,248,129,216,103,80,174,106,35,58,61,6,159,12,26,183,172,155,204,174,250,176,107,67,147,32,236,52,53,141,237,243,22,66,203,251,29,249,136,50,97,93,35,142,238,240,93,184,233,189, +4,198,167,96,239,43,182,135,81,169,134,177,113,21,255,112,179,135,190,188,23,95,146,162,82,46,95,110,91,224,26,210,178,121,110,60,181,126,21,37,152,35,238,28,136,187,148,163,205,171,74,75,114,133,234,55,96,227,24,108,62,52,29,73,229,6,34,42,185,47,234,62,10,119,177,189,212,195,208,210,184,39,26,230,28,135,88,154,180,122,162,47,183,44,111,161,172,4,9,212,237,69,180,60,138,219,105,92,26,99,169,189,71,161,197,209,222,206,126,220,206,26,53,217,236,64,163,154,59,244,3,29,232,33,110,63,122,213,184,28,100,152,180,92,165,168,126,72,110,200,121,150,242,18,29,133,143,107,109,183,164,201,135,118,15,126,217,181,166,235,238,26,238,21,168,217,249,78,129,177,95,35,21,79,68,153,17,188,215,150,226,231,188,235,245,218,141,149,1,75,0,27,228,201,49,88,212,180,144,190,27,218,27,80,107,20,188,166,117,202,244,241,190,174,185,133,183,70,44,234,139,132,109,148,211,165,153,203,25,233,242,86,113,112,120,67,182,97,119,5,44,51,123,217,254,100, +49,185,169,227,143,145,182,168,200,64,176,147,98,52,80,98,190,166,129,131,100,195,204,200,236,102,80,26,79,68,253,108,3,95,131,147,244,26,137,225,169,201,100,103,50,105,33,219,132,13,236,97,43,118,106,109,177,145,208,43,214,244,70,54,197,195,5,202,142,53,43,229,162,77,107,75,92,52,244,23,84,122,6,172,102,141,176,107,208,158,197,176,104,148,137,173,206,185,44,78,71,131,219,189,106,210,62,218,50,208,35,12,35,77,153,56,252,32,57,172,222,163,112,251,244,187,179,234,53,201,6,105,102,97,18,87,111,64,117,45,8,227,54,50,60,36,228,142,47,53,205,9,154,34,139,107,235,50,223,220,90,243,152,31,181,76,90,53,246,47,172,209,99,5,29,206,231,104,152,66,225,4,198,112,102,14,169,60,128,167,54,57,3,19,112,130,160,73,200,147,175,215,171,187,91,168,230,101,202,102,135,31,141,89,15,44,215,207,118,43,187,247,234,169,4,183,98,19,171,95,232,197,245,18,149,52,1,13,65,72,173,104,21,72,100,92,47,16,102,23,26,15,91,232,222,141, +157,142,1,33,29,61,221,33,245,30,226,40,171,6,113,76,45,159,243,109,225,91,229,91,109,202,20,73,20,138,139,26,165,172,62,137,93,130,210,228,218,36,203,40,82,175,202,140,166,11,39,139,140,84,195,129,111,53,186,174,53,123,14,248,164,34,66,25,243,193,249,249,212,242,14,7,39,31,107,230,13,118,211,233,222,133,17,92,31,129,111,88,227,57,181,179,185,61,85,67,0,240,186,172,209,193,77,107,52,61,160,51,161,17,72,139,42,8,71,79,28,72,197,236,142,57,194,193,0,19,71,108,93,69,235,140,112,7,109,118,209,61,129,167,224,19,14,10,185,205,231,31,58,74,7,155,199,213,51,30,15,34,52,191,210,161,67,135,122,120,90,227,124,97,68,194,8,205,68,67,182,131,185,169,160,1,163,116,42,51,75,164,9,209,188,158,20,25,162,41,3,100,123,212,132,88,164,237,90,240,177,6,47,77,153,89,206,171,49,212,149,84,58,16,38,137,112,18,98,175,57,124,188,169,12,47,32,16,194,126,191,44,32,192,57,250,82,163,172,217,124,126,183,64,159,162, +97,81,56,204,24,161,69,208,199,148,91,154,232,49,145,70,231,219,199,105,104,3,147,248,221,197,133,184,159,76,55,160,113,29,44,56,217,137,85,8,12,153,248,122,227,214,100,247,168,195,35,44,8,246,20,35,99,161,69,210,108,106,145,176,27,141,145,143,50,219,118,102,177,27,51,97,219,227,224,177,5,247,62,199,49,216,169,67,204,138,5,114,22,149,198,113,96,8,56,67,94,66,14,58,20,34,213,142,64,199,210,11,81,75,14,223,98,207,146,164,208,28,68,79,16,182,209,7,199,100,97,161,99,186,96,54,211,180,28,99,188,129,80,220,26,51,91,77,157,93,197,97,66,143,20,167,29,14,54,22,205,210,212,122,86,118,128,246,174,35,198,153,225,13,156,134,199,32,166,132,166,21,74,208,199,179,12,167,141,77,89,101,139,184,167,119,81,178,51,58,150,231,178,226,72,156,54,193,153,70,50,103,221,109,193,222,208,72,179,120,178,77,80,240,97,218,209,153,156,64,28,154,231,171,221,36,26,50,60,229,8,244,18,28,112,132,49,162,70,180,26,149,226,190,8,58, +201,238,141,244,175,116,236,133,200,157,70,142,119,236,136,121,60,233,210,110,136,69,82,183,77,103,220,65,239,214,135,147,44,151,142,180,31,19,240,204,221,190,248,12,13,167,142,193,77,115,200,164,198,156,98,165,186,224,173,241,9,34,137,51,182,63,63,47,148,39,108,235,41,209,40,82,96,24,142,42,70,8,221,11,52,20,110,132,208,156,109,67,35,251,253,45,218,250,73,248,20,109,212,236,108,177,206,172,236,76,73,122,148,97,155,11,199,54,8,6,6,16,93,78,199,68,61,99,131,13,247,135,15,5,67,212,85,201,100,106,49,16,154,108,217,219,72,192,143,59,139,146,132,163,123,142,19,30,153,137,204,29,245,240,17,49,198,152,125,75,72,227,16,236,29,112,129,0,71,141,196,230,67,237,6,37,122,81,41,231,193,7,135,54,155,13,162,230,180,114,58,228,199,169,69,171,12,28,223,144,103,21,48,139,214,60,181,113,111,169,125,200,223,70,99,218,9,70,148,176,112,228,166,162,45,134,110,142,5,9,172,46,154,49,196,90,193,9,98,235,112,31,114,6,171,146, +119,98,251,177,204,81,255,150,128,142,198,233,208,4,12,3,189,70,13,229,180,109,104,93,163,28,30,143,145,45,4,90,155,109,72,54,107,22,26,219,117,40,131,207,158,137,236,5,90,143,154,213,43,73,115,168,71,107,220,158,119,27,129,136,97,114,18,16,194,229,249,13,21,203,155,76,216,26,218,112,180,70,26,77,47,64,97,155,180,100,186,105,43,201,33,178,64,3,21,109,115,162,46,165,80,111,239,87,34,35,171,227,65,125,183,131,81,79,71,96,232,62,248,170,31,221,40,146,231,58,224,58,157,28,238,67,97,28,122,235,222,166,43,27,245,176,17,83,163,82,239,76,255,252,26,154,228,116,24,92,52,186,21,215,166,147,245,32,68,222,184,119,16,101,52,82,246,208,10,150,79,192,17,242,251,186,59,13,248,156,87,31,114,112,218,100,59,236,166,86,12,102,45,16,163,17,19,19,44,198,36,174,189,159,68,160,146,194,202,110,60,219,60,132,214,211,29,29,225,61,6,74,222,30,34,22,91,22,12,133,118,114,187,211,104,83,44,144,119,148,242,184,19,159,239,64, +98,71,148,94,14,37,28,110,103,14,44,182,183,208,71,112,110,99,119,108,23,135,195,240,163,91,185,101,180,187,119,117,35,132,207,185,153,238,92,170,153,219,211,43,246,194,87,99,98,156,192,187,69,71,215,235,56,76,1,81,64,139,53,116,33,116,114,242,184,150,153,73,50,84,218,165,67,158,168,83,182,52,177,79,8,15,152,143,187,149,114,248,40,19,49,233,35,224,99,65,246,232,152,22,187,129,88,108,237,141,180,206,54,110,207,59,135,13,209,60,175,33,158,180,73,154,226,153,101,179,190,29,75,25,108,238,35,72,216,211,156,45,1,6,57,193,10,139,148,59,120,154,29,46,10,209,169,17,249,150,159,200,26,19,34,50,12,73,183,206,58,60,179,149,118,5,53,61,3,173,51,129,85,187,29,133,140,140,181,175,197,12,174,241,32,127,194,163,165,44,237,196,216,1,6,103,151,208,237,136,184,80,187,139,180,1,78,130,103,221,31,14,12,43,242,33,107,122,223,168,107,82,16,240,112,44,205,79,239,20,121,221,112,124,236,200,206,88,243,26,21,35,168,253,213,236, +172,50,164,18,140,152,49,40,9,242,168,104,116,219,217,76,74,91,231,164,121,144,194,207,101,183,120,225,168,101,168,117,146,152,198,245,8,11,75,3,164,121,78,191,6,133,11,30,141,116,32,199,219,36,114,21,119,113,149,64,21,181,217,224,249,38,34,97,96,103,198,235,227,239,18,186,176,120,235,209,38,206,38,119,58,183,14,68,68,161,14,238,152,211,53,142,105,219,209,116,157,246,8,195,196,109,247,78,139,130,170,0,150,101,130,31,12,199,89,243,240,252,244,120,58,149,29,152,24,1,66,182,49,141,136,196,215,60,107,134,141,117,207,186,109,28,222,27,109,237,141,54,106,215,55,138,35,5,90,143,186,77,223,200,62,246,104,15,72,52,120,202,19,60,106,160,247,237,245,108,45,49,214,152,109,131,17,143,107,248,232,184,119,179,208,52,181,210,150,231,36,5,42,131,131,217,98,54,163,189,60,248,8,166,53,64,244,41,152,17,140,165,113,111,141,152,243,210,16,89,65,108,46,86,96,209,214,235,57,198,163,13,147,14,183,217,208,55,158,157,88,25,174,39,113,72, +75,28,125,88,130,115,218,166,45,214,93,235,142,69,143,58,132,247,182,96,21,163,145,48,110,155,130,10,194,45,220,233,61,134,104,8,79,167,203,58,151,197,51,116,10,218,212,230,69,33,84,65,99,128,110,92,97,250,233,56,34,146,144,22,48,117,98,164,50,146,215,144,251,66,136,161,198,253,137,49,139,174,153,192,244,204,202,247,44,210,227,152,7,191,189,29,240,199,135,6,169,205,105,14,93,68,181,53,28,246,193,253,115,58,131,176,141,160,221,235,193,73,146,140,182,73,100,243,128,64,205,208,82,85,78,37,177,237,192,219,216,52,53,29,27,159,22,110,29,107,86,11,12,145,111,31,211,155,242,195,253,152,105,220,132,188,104,196,78,248,71,149,66,221,148,23,49,139,64,16,117,75,44,207,58,34,91,204,144,231,51,169,140,81,157,79,213,215,171,69,69,171,39,202,214,194,199,241,62,50,51,147,79,103,142,183,215,54,26,87,162,128,80,199,114,27,121,10,114,106,216,163,29,220,200,165,51,71,177,37,215,54,26,109,42,186,24,116,82,106,102,151,139,8,182,83, +122,199,142,40,199,253,14,132,192,123,180,17,52,44,243,122,80,1,18,47,67,51,237,168,229,242,94,14,3,177,26,238,146,136,36,169,14,17,130,237,203,184,199,151,166,99,40,62,22,155,10,35,204,211,2,174,36,226,97,29,0,118,140,244,58,98,30,156,145,52,213,236,118,15,22,5,50,57,205,143,159,141,96,131,138,1,138,14,137,86,101,122,116,236,190,16,134,183,78,247,37,24,14,14,102,5,30,48,174,29,111,43,54,183,56,64,254,60,223,108,34,108,225,58,150,121,248,24,250,200,219,170,15,82,104,83,174,165,133,254,206,230,246,104,138,16,25,105,139,247,134,18,78,105,210,79,104,235,182,88,217,19,76,199,160,117,232,120,157,60,195,240,246,187,214,69,94,36,18,215,216,65,33,108,43,133,230,142,49,140,208,184,140,99,209,235,141,1,169,172,155,224,244,49,67,219,185,230,17,93,189,201,235,128,199,117,205,155,70,22,29,27,239,12,136,165,211,152,65,12,133,169,167,24,71,82,83,99,10,37,209,227,239,167,105,72,203,193,222,182,85,180,193,143,240,75, +242,71,217,100,2,119,92,200,218,137,217,88,113,101,111,216,106,28,24,214,23,51,198,113,126,62,187,54,28,165,122,198,139,105,79,97,109,37,170,205,103,61,251,195,192,7,59,132,27,110,240,212,119,241,137,201,72,110,127,52,151,221,23,140,122,68,17,60,18,203,67,88,80,65,181,196,76,3,114,56,46,199,22,229,1,190,35,233,146,52,141,197,119,204,20,174,70,41,109,69,57,122,252,27,44,55,103,174,79,226,145,105,83,202,61,150,2,197,21,153,150,49,115,104,185,223,57,65,234,8,175,146,15,123,132,41,242,36,129,223,224,199,46,47,228,90,184,28,126,40,173,166,53,31,18,57,153,208,142,43,121,212,147,237,16,118,54,137,122,6,105,54,61,60,184,9,72,222,155,137,109,103,199,21,227,58,76,180,126,106,93,48,177,110,85,5,197,83,22,253,252,64,236,32,73,146,244,251,179,156,67,191,83,60,237,150,90,7,69,166,134,165,206,25,93,2,105,156,13,166,83,178,109,113,0,105,30,198,160,200,179,91,27,5,195,52,221,128,32,227,204,136,97,98,27,110, +137,196,6,226,135,160,128,198,211,219,66,184,73,33,191,89,51,91,104,65,114,12,19,245,99,180,161,182,85,10,137,109,18,200,58,241,44,63,210,75,97,118,135,16,10,86,10,139,102,231,21,33,13,62,184,105,110,65,164,237,34,153,99,122,116,182,175,109,113,85,141,138,81,218,55,181,211,75,27,171,71,188,6,174,68,208,139,25,143,205,147,112,45,169,163,205,105,156,115,62,215,30,180,179,199,137,130,113,118,104,205,77,237,228,110,20,243,20,106,61,130,142,211,96,24,194,196,116,158,26,39,46,71,243,102,64,156,245,128,39,70,170,151,53,93,45,71,196,36,143,189,235,140,133,217,222,152,84,19,221,245,241,236,57,163,82,184,125,208,236,223,101,59,153,206,64,126,114,98,81,31,200,160,229,45,168,54,162,144,76,195,200,121,250,20,58,223,70,109,209,20,137,72,148,100,34,214,201,117,5,198,122,6,196,135,102,42,28,49,108,33,232,186,189,131,220,216,192,228,236,154,59,168,80,204,174,88,250,208,195,107,115,4,246,162,102,166,85,21,107,240,205,18,39,17,189, +148,41,27,35,91,48,155,184,17,249,118,146,96,134,219,209,7,108,91,239,138,17,211,65,99,17,56,178,61,66,184,1,33,156,97,144,247,39,102,44,4,226,212,97,19,3,55,213,41,160,17,145,228,148,34,21,219,166,164,109,134,137,86,58,129,39,105,157,217,177,182,180,229,211,2,73,152,12,39,14,12,113,86,5,190,36,53,164,107,12,99,248,112,67,119,82,70,150,168,112,130,227,65,226,84,84,216,213,128,50,167,44,7,36,157,8,143,201,226,102,251,162,3,43,199,171,10,63,102,165,73,142,131,163,38,85,150,121,111,0,111,150,199,27,21,194,201,248,152,32,94,56,22,99,145,38,223,44,254,72,138,100,196,162,195,84,79,95,68,219,233,94,207,35,176,216,32,9,161,105,79,229,90,86,198,198,250,208,226,124,84,105,180,226,86,228,24,154,91,195,138,183,186,176,36,199,128,31,55,206,104,45,98,208,234,105,189,191,64,29,163,79,119,178,20,10,247,94,191,218,60,176,43,31,194,14,247,141,202,217,198,137,145,150,212,192,97,147,111,110,106,78,85,28,195,9, +209,166,36,189,103,96,103,213,101,228,217,219,91,123,105,20,82,47,110,179,191,47,59,65,61,194,33,150,225,212,64,168,207,177,126,32,84,121,189,45,203,203,26,205,174,123,67,27,247,47,219,66,105,25,126,7,137,102,251,200,36,4,29,131,101,198,6,122,119,220,198,188,111,208,200,39,193,139,147,162,67,218,72,115,34,164,164,205,178,80,218,25,135,118,33,221,168,37,171,142,39,140,155,172,142,181,78,38,254,224,40,52,59,147,136,213,239,200,4,94,69,36,103,153,155,90,14,113,14,137,131,18,161,177,117,8,61,234,95,82,172,89,86,246,133,193,96,80,59,44,45,146,2,131,46,103,223,128,192,40,210,57,134,150,124,235,156,233,96,83,8,222,210,172,48,68,166,90,48,152,126,10,73,116,208,26,112,152,26,154,232,146,13,25,141,62,173,222,136,23,22,49,122,34,174,187,55,50,96,97,171,162,29,217,4,31,183,32,143,31,9,250,231,232,195,30,140,236,96,222,198,162,250,45,209,180,39,62,220,74,24,137,225,101,226,9,18,183,159,217,15,231,244,192,137,49, +13,125,189,169,157,24,39,207,183,107,11,246,221,40,77,57,60,96,229,225,138,67,131,179,217,198,166,180,14,142,75,98,188,110,116,119,49,111,110,92,111,220,65,145,56,6,28,18,187,224,146,183,97,168,155,171,134,3,120,251,177,93,238,101,145,118,179,206,22,84,60,129,240,40,169,98,156,72,111,227,35,9,56,137,45,163,72,237,15,119,167,11,71,196,148,124,255,48,85,236,73,172,47,163,90,137,232,20,122,94,200,195,89,91,56,227,91,116,83,100,159,52,51,211,188,160,31,233,10,240,48,130,131,206,86,167,120,140,210,58,34,163,192,253,189,42,209,161,138,56,219,26,28,105,11,234,40,2,37,70,183,37,199,97,246,44,170,60,107,148,220,21,220,110,20,117,219,186,157,155,218,68,86,71,84,237,68,29,193,70,170,70,4,71,58,24,182,78,46,135,98,24,28,75,32,116,116,117,66,29,38,237,46,120,183,142,205,75,42,19,193,70,234,92,75,209,143,77,228,137,193,118,228,170,110,14,62,154,81,102,215,187,38,150,17,109,248,108,66,141,235,147,185,82,1,5, +55,180,56,32,91,240,114,214,118,118,153,156,230,230,254,244,66,118,60,215,171,165,198,242,154,77,1,217,208,172,141,45,180,208,59,183,230,232,245,242,120,91,162,161,157,128,105,64,14,141,201,15,226,25,110,178,175,91,40,51,185,23,103,199,103,27,67,17,162,164,189,93,73,223,48,14,171,84,89,14,64,88,76,78,27,220,48,29,160,235,167,27,53,199,245,240,54,65,142,51,50,158,129,4,175,92,179,226,138,157,131,61,41,188,114,199,19,67,241,212,189,44,125,187,104,51,186,190,135,63,236,241,35,20,136,21,178,67,142,25,152,94,92,12,138,16,150,246,201,209,132,52,116,208,51,203,12,31,170,240,123,52,153,52,223,168,114,53,115,214,113,122,150,114,110,128,32,198,209,204,50,111,28,207,34,34,153,166,24,185,96,141,210,14,14,117,3,108,209,114,12,142,94,86,43,179,125,141,62,187,185,135,39,103,202,27,91,197,120,58,97,141,216,178,229,219,32,138,189,211,73,147,125,201,56,58,190,21,105,207,237,226,61,45,230,142,222,89,64,254,132,49,180,39,185,171, +36,135,6,220,66,87,195,20,22,71,140,77,144,251,2,199,126,239,8,95,150,115,4,152,161,224,96,159,195,151,26,160,33,41,174,1,138,173,201,63,100,16,26,209,75,18,62,98,169,91,130,102,171,166,183,104,235,156,9,151,111,74,226,116,164,210,41,140,125,123,16,173,104,238,178,35,27,209,52,183,96,214,53,66,220,234,16,10,245,70,195,70,243,170,43,46,62,30,107,242,211,148,99,228,32,173,99,28,190,191,49,71,18,76,120,247,183,4,109,69,55,183,167,81,27,77,34,37,153,200,130,95,218,5,159,88,24,176,209,77,38,43,22,181,102,89,115,39,134,39,225,88,250,232,186,127,22,15,24,41,174,5,25,238,138,20,119,26,40,94,145,6,11,54,57,172,217,205,40,131,148,10,174,102,219,220,252,197,120,139,243,8,133,84,179,233,140,177,93,142,223,6,103,160,162,3,155,125,214,61,252,194,142,234,88,128,155,68,32,48,17,153,106,108,54,182,131,119,181,107,39,130,186,25,67,127,19,127,216,80,175,75,163,144,38,65,231,28,67,178,56,199,216,220,92,13, +184,214,186,226,33,121,123,166,224,205,140,55,229,182,14,132,13,205,66,97,129,155,139,184,14,140,13,206,67,223,130,202,54,70,246,154,173,17,123,75,0,51,160,195,57,51,25,29,227,48,212,101,108,62,154,176,71,218,14,151,135,153,136,113,164,83,183,133,80,12,76,140,107,137,227,115,54,100,95,179,43,65,147,48,99,102,185,64,213,35,94,158,98,38,66,14,164,127,32,12,167,144,112,10,69,190,190,81,37,8,73,237,232,206,134,9,226,52,102,150,171,213,39,34,150,32,158,200,240,110,33,16,26,196,81,227,190,74,182,211,136,137,234,250,194,77,141,150,176,174,128,56,246,123,122,219,98,28,30,35,36,88,32,7,196,237,49,103,155,122,47,147,26,200,142,35,234,141,2,180,138,214,99,88,198,160,179,173,168,5,177,1,153,61,10,199,147,50,164,88,80,20,57,118,16,56,226,26,92,108,29,33,28,175,117,108,205,121,102,29,40,114,247,40,173,63,202,114,208,26,189,19,88,10,63,18,219,12,79,173,99,112,148,86,211,224,132,204,202,179,36,50,106,176,56,73, +38,37,13,77,113,123,255,198,1,124,108,80,188,168,232,32,24,2,248,6,74,255,172,188,176,133,53,147,162,19,58,148,22,129,213,147,233,133,129,130,26,79,27,200,246,143,182,75,195,187,86,91,99,211,150,79,47,147,198,70,188,230,122,253,130,75,100,12,184,98,90,217,226,24,23,141,209,161,5,155,130,166,149,48,103,124,18,75,151,24,113,179,135,174,129,169,4,162,158,39,81,107,7,34,243,94,238,174,19,79,219,10,233,83,169,193,126,228,110,55,18,141,243,18,54,88,170,233,46,55,80,34,178,135,189,49,178,74,233,196,168,189,77,140,113,141,26,193,193,8,58,147,132,9,6,81,52,137,227,40,12,123,171,35,54,254,188,147,64,10,193,197,157,64,189,187,31,2,162,93,7,98,151,189,51,225,159,156,64,208,17,155,94,166,4,25,210,111,17,117,13,72,178,5,73,222,221,182,88,25,198,16,79,137,8,120,231,197,206,174,110,25,130,228,197,234,172,234,222,78,225,204,148,222,180,53,220,110,242,178,142,22,54,151,149,206,70,73,23,197,175,67,70,240,11,153, +14,61,43,27,194,207,29,139,103,148,168,246,104,34,207,36,88,58,232,129,205,195,149,69,179,117,147,59,26,238,80,171,8,178,249,62,82,11,158,19,31,20,114,141,155,199,196,78,175,37,213,120,32,52,228,183,167,54,218,216,126,106,176,215,153,182,50,237,170,196,104,219,200,102,172,137,13,22,219,243,5,118,55,144,131,216,229,249,3,54,252,8,77,47,32,205,122,199,60,95,51,162,74,163,172,188,142,212,92,76,213,174,195,173,135,184,54,94,48,53,160,89,157,108,60,154,23,203,250,253,219,240,225,8,117,38,58,33,228,194,29,112,159,87,180,72,156,235,49,185,228,64,193,17,137,237,20,135,189,182,104,99,161,1,238,56,164,215,75,37,40,172,245,104,7,142,156,142,11,71,80,235,147,171,6,77,56,175,89,235,89,30,209,57,55,218,115,13,132,89,156,187,197,74,92,108,244,211,99,93,158,126,59,110,145,151,137,31,166,184,43,236,160,23,160,19,77,57,212,120,228,203,73,21,133,26,197,117,34,36,150,197,69,29,162,83,160,227,109,42,90,250,12,4,57,7, +51,231,218,65,26,133,177,120,179,182,179,35,186,179,164,52,51,231,133,14,2,23,151,146,192,49,235,226,45,147,192,189,180,172,70,96,179,227,171,10,21,223,183,97,219,214,44,165,38,195,131,4,210,204,178,168,45,151,224,226,71,189,105,38,81,220,125,188,171,18,217,77,99,169,93,38,37,39,141,79,7,86,133,13,24,228,174,94,21,245,82,133,216,149,237,101,201,100,98,19,131,23,161,136,8,84,7,88,151,11,56,234,81,92,96,31,97,93,44,8,70,45,153,93,62,224,149,61,68,171,121,32,71,109,238,219,228,111,74,209,90,56,125,189,209,233,48,7,199,77,19,184,88,196,43,79,6,54,36,114,46,97,80,6,119,182,41,122,69,29,140,86,154,206,47,136,107,41,145,34,147,72,96,72,4,38,145,19,189,20,68,98,155,24,83,155,10,206,186,65,233,160,43,183,212,49,161,114,219,223,67,90,88,111,54,167,16,217,128,77,186,191,190,216,190,35,65,245,33,54,230,20,90,122,2,47,48,185,215,246,26,27,53,22,21,178,9,177,191,27,156,110,152,83,91,231, +115,13,253,35,115,212,62,56,77,226,29,235,35,48,210,217,248,220,72,189,28,57,131,238,118,46,236,117,185,246,250,224,122,36,47,194,97,58,23,9,200,52,147,134,10,98,76,116,61,154,168,196,97,108,188,158,252,88,186,103,220,130,29,220,68,199,109,116,70,28,113,220,119,232,234,96,46,56,224,210,101,67,82,179,138,168,111,103,17,135,109,24,10,91,19,238,204,246,161,145,172,236,102,35,65,219,234,45,34,104,109,92,217,10,114,19,219,208,64,143,178,35,121,143,170,75,219,49,96,57,8,247,109,217,167,2,168,246,227,84,222,217,187,26,151,12,171,198,12,107,39,125,100,94,211,150,169,216,216,237,27,10,110,55,153,123,153,146,102,244,33,17,65,238,181,28,246,98,3,251,235,138,152,212,162,10,22,204,45,203,109,67,118,179,99,77,79,206,39,228,71,173,40,3,113,127,184,103,125,108,190,105,96,0,211,219,234,55,32,113,76,129,155,227,12,235,34,41,212,98,193,204,65,40,215,232,214,125,58,114,212,123,144,111,238,162,167,58,5,211,139,50,123,192,60,39, +177,211,216,45,154,9,143,164,37,97,9,53,111,237,146,178,134,216,108,139,4,161,239,17,246,47,18,179,76,123,146,231,33,236,212,7,253,57,86,132,230,192,251,113,163,44,113,255,26,224,103,186,70,183,235,67,97,191,24,47,134,179,71,83,25,177,87,49,41,135,83,229,72,180,15,110,106,10,96,241,19,6,116,135,44,210,106,75,138,117,187,148,109,38,126,139,217,224,131,71,2,122,42,101,35,221,3,159,108,15,119,81,48,153,34,161,222,164,110,64,185,146,49,137,151,55,228,88,158,238,31,47,12,205,132,228,98,89,72,80,191,60,178,137,211,108,164,102,151,234,11,219,22,83,127,71,220,122,208,45,233,29,145,244,57,104,147,35,22,41,95,235,69,46,237,175,165,117,126,145,194,222,229,89,81,101,14,246,220,77,135,59,94,171,61,222,189,55,170,25,99,177,83,116,236,170,36,104,48,145,113,41,253,174,133,59,226,144,237,206,50,215,189,155,166,133,46,241,50,232,98,71,147,217,126,32,117,208,51,23,192,118,47,93,98,115,16,13,153,118,52,58,78,183,213,51, +214,232,219,62,20,58,37,212,12,237,21,141,220,65,178,107,123,155,56,231,45,40,155,6,177,186,8,97,157,133,70,250,213,114,67,18,221,60,233,91,244,16,7,227,142,161,214,93,41,103,145,139,147,193,125,240,37,5,186,219,139,153,234,32,216,214,246,218,70,152,11,157,226,131,206,22,205,108,243,48,199,220,146,202,204,118,54,140,80,230,236,115,57,101,100,206,146,79,47,186,4,56,238,248,70,126,100,80,149,159,116,111,72,123,119,34,190,33,120,131,106,212,71,52,224,71,121,125,107,11,19,226,133,64,115,74,33,12,207,174,173,135,9,221,148,121,18,105,80,234,90,153,55,81,184,209,17,61,146,148,29,155,55,227,221,212,1,42,234,64,156,54,212,39,55,248,90,178,123,88,208,23,145,23,66,178,148,91,149,178,236,9,76,19,24,107,23,209,179,195,10,103,233,204,209,131,205,69,221,8,185,189,91,147,200,142,83,26,248,179,112,134,107,110,28,191,163,228,75,37,58,85,143,100,51,236,36,210,117,30,121,208,222,192,183,236,75,99,59,121,38,175,192,136,182,183, +46,5,194,132,57,4,60,207,220,64,210,2,168,30,198,113,131,164,5,223,170,152,69,153,188,114,217,161,67,142,90,23,136,49,225,237,89,87,90,177,33,75,64,105,195,70,211,44,96,211,204,48,34,238,192,49,92,243,161,213,41,7,26,215,217,69,117,42,234,101,199,59,115,72,251,240,86,23,211,155,76,111,245,169,76,29,190,132,68,193,211,132,112,246,254,184,111,80,19,83,121,77,186,185,30,158,75,193,229,152,151,15,152,116,137,65,180,141,136,203,57,88,59,110,60,34,55,164,204,86,177,189,37,1,159,44,176,18,194,163,137,201,209,157,80,63,60,162,217,208,88,91,61,146,94,249,208,16,79,52,36,92,52,241,67,93,142,252,10,113,92,216,146,77,91,182,119,119,157,41,218,240,62,10,115,140,194,97,37,72,96,189,54,59,61,178,209,205,165,20,69,63,41,71,174,227,40,108,162,63,30,219,152,101,207,120,51,203,146,209,190,113,131,57,101,214,19,146,81,126,200,55,179,131,234,160,78,183,123,133,112,73,223,54,97,229,208,20,106,166,19,136,104,212,254,94, +87,91,206,171,194,185,7,118,163,244,76,14,201,84,186,164,141,122,109,3,189,197,225,231,183,160,16,153,174,37,119,59,47,181,178,105,227,251,187,198,99,115,54,91,81,22,10,202,248,216,149,254,168,125,103,67,149,181,181,21,182,226,150,121,197,156,128,145,195,162,56,9,135,174,119,239,176,225,112,104,139,16,62,54,239,23,163,51,51,219,166,227,181,113,82,177,126,44,96,196,166,152,52,187,66,56,178,178,78,133,195,215,80,28,112,15,77,66,106,229,181,54,41,162,83,42,85,255,28,202,66,10,77,14,144,247,251,252,187,233,181,185,105,65,58,44,37,213,199,108,200,28,21,221,160,92,56,148,14,141,178,121,46,178,127,58,226,165,41,132,74,150,112,155,146,24,24,218,99,42,177,112,56,27,23,79,19,68,185,0,153,159,192,79,251,199,215,136,13,163,135,61,225,230,246,99,94,125,90,39,76,11,35,102,11,123,107,126,155,55,175,111,233,242,182,15,104,134,113,248,78,13,3,195,129,3,117,135,195,27,135,51,90,83,51,237,163,4,49,124,4,239,101,91,132,141, +77,134,62,76,36,142,138,175,207,38,210,221,66,214,254,154,180,41,206,91,136,183,247,185,227,83,195,210,166,246,180,128,225,48,108,235,27,138,75,172,168,126,107,63,209,181,207,246,152,76,171,243,38,92,172,219,182,199,177,211,251,246,199,60,69,9,61,150,204,30,162,137,219,237,237,252,70,47,151,189,215,217,167,107,147,193,189,188,221,126,252,82,0,27,225,184,198,41,9,187,219,213,110,228,236,198,89,240,65,147,218,68,221,197,108,119,140,31,180,120,18,97,211,136,69,140,177,12,208,225,41,55,70,143,180,41,124,6,130,123,135,50,28,33,35,220,189,252,35,174,222,195,14,107,163,209,253,126,75,113,187,41,206,229,71,219,232,154,177,101,94,87,154,186,189,184,216,142,27,213,167,201,107,177,89,69,183,52,230,35,218,71,185,242,117,145,207,184,96,243,239,110,134,91,135,243,156,201,214,30,116,194,157,154,192,45,219,83,123,211,62,75,76,131,209,81,98,6,73,108,212,96,137,99,184,84,66,124,216,32,154,53,36,108,172,86,73,140,224,221,157,109,203,141,240,29, +8,243,170,37,149,64,98,253,184,229,17,178,243,168,47,178,187,148,117,162,133,188,8,157,114,220,234,81,164,155,231,49,179,51,135,73,248,100,219,113,194,168,19,162,29,245,186,192,246,130,216,103,23,196,244,193,125,230,136,104,156,210,227,247,27,164,114,95,34,96,95,217,119,181,143,202,68,3,221,198,129,105,90,79,206,229,20,210,16,162,134,6,41,183,107,206,204,71,226,218,186,49,196,150,110,103,46,212,66,223,242,230,221,9,158,100,175,21,189,175,140,208,18,150,227,13,58,47,72,8,173,209,215,53,148,189,150,86,236,48,143,206,91,89,155,174,31,29,143,25,87,133,75,6,132,103,126,62,99,107,24,86,181,177,130,211,173,153,6,185,186,97,167,119,123,178,187,65,11,199,161,229,112,116,127,219,44,201,153,84,19,130,212,93,186,169,121,78,35,90,236,100,209,250,109,75,240,169,32,122,130,70,41,182,134,19,248,174,204,240,146,23,161,236,105,235,66,132,188,137,224,86,47,95,226,25,24,27,228,79,76,101,217,91,166,221,2,110,107,99,23,97,192,240,59,215, +179,188,37,17,78,218,71,32,115,140,26,197,81,164,159,106,95,54,122,117,141,169,233,209,30,249,113,216,105,116,33,180,137,22,83,31,59,130,231,97,27,118,88,38,28,123,135,182,160,50,202,71,58,201,155,38,133,164,191,94,39,148,169,26,105,13,199,77,142,33,149,31,209,134,12,161,168,24,31,74,167,193,161,137,126,241,170,13,67,22,110,122,245,188,131,5,6,127,58,166,27,179,111,170,18,118,163,111,106,219,145,229,14,194,181,99,68,135,137,222,18,241,235,68,42,28,133,105,114,80,108,45,24,74,27,114,13,55,82,47,61,156,12,196,245,139,189,249,224,34,94,82,160,197,247,181,6,212,10,89,211,20,107,238,157,97,160,29,232,189,17,67,179,101,220,51,131,90,152,201,51,18,197,72,60,147,244,237,72,114,249,163,93,157,38,232,26,87,31,68,121,230,164,102,14,63,102,223,161,82,72,177,24,166,201,171,216,38,68,86,41,70,9,202,99,158,157,115,236,144,144,125,67,232,177,78,41,115,222,225,242,89,77,46,173,158,175,141,7,152,19,91,61,203,141,40, +110,191,107,149,213,136,158,160,139,108,163,197,131,212,6,166,40,8,70,119,45,199,93,66,20,218,20,117,15,187,93,84,66,118,101,51,13,10,19,144,165,211,128,89,58,226,56,133,38,247,182,91,65,245,7,180,66,22,202,214,98,107,234,233,52,233,50,172,80,172,99,114,65,70,157,180,136,81,131,93,212,227,61,184,89,231,24,229,169,129,202,84,203,245,37,189,145,110,141,14,69,9,90,69,50,22,162,145,210,48,141,37,178,117,2,228,42,27,137,100,112,167,118,240,170,110,142,147,144,164,26,109,202,153,102,37,135,188,216,223,11,167,80,60,218,237,236,236,128,100,216,59,236,236,63,76,18,23,53,76,180,112,174,187,209,215,195,64,210,40,237,141,10,70,135,213,49,146,148,81,184,173,34,20,28,141,101,210,119,204,86,171,77,182,165,94,90,88,208,30,176,114,109,193,118,1,34,4,39,244,133,225,82,239,86,114,99,67,135,21,172,22,212,57,223,168,219,57,212,220,173,26,237,146,76,25,8,97,93,32,126,20,8,231,39,134,252,3,123,163,199,27,190,240,168,52, +112,44,217,31,151,42,213,81,156,87,113,132,107,80,240,51,43,73,123,247,116,178,111,137,238,30,193,205,28,140,113,23,130,235,174,76,253,160,166,113,162,177,23,71,108,222,65,114,59,69,3,67,211,64,133,207,55,47,225,145,253,227,20,214,1,105,136,191,61,236,12,6,141,163,91,162,177,99,55,191,83,59,40,59,152,210,121,114,238,253,158,124,200,189,215,170,240,83,41,196,21,89,142,150,29,28,136,172,246,54,119,140,147,29,252,166,54,189,35,74,161,210,8,18,51,39,110,154,226,110,19,240,128,251,164,76,205,244,143,30,165,19,104,96,113,245,174,47,6,151,68,73,92,110,1,46,36,200,17,115,123,112,42,169,213,182,143,26,177,101,83,177,145,204,38,9,191,219,181,207,220,64,29,251,124,216,148,50,117,68,155,12,168,233,163,62,175,184,65,167,31,104,132,207,73,151,8,178,13,19,2,73,241,52,170,115,65,245,86,110,65,218,144,203,206,138,142,112,83,54,101,123,239,250,132,194,192,214,177,3,237,4,67,42,150,20,99,162,104,51,106,159,185,140,225,30, +243,129,204,165,81,178,149,108,93,240,17,187,220,196,110,67,74,8,39,167,16,83,188,168,144,171,74,174,234,228,61,99,209,153,253,168,186,173,25,59,206,152,25,28,217,27,234,233,105,98,143,176,87,88,129,160,68,2,151,154,45,150,250,250,122,74,61,182,94,26,100,47,103,102,88,27,217,120,171,81,176,121,140,161,142,41,68,189,197,3,7,95,125,24,108,78,142,89,119,133,209,35,97,54,148,220,79,88,119,136,30,167,118,35,57,49,193,141,233,139,34,118,103,55,165,117,58,135,26,26,35,224,186,209,50,102,134,176,177,189,172,19,211,24,49,145,160,158,150,54,167,248,104,52,70,187,216,138,80,247,77,167,29,145,227,253,232,254,158,133,184,87,212,40,134,197,133,137,98,62,59,67,21,42,60,14,65,95,203,177,56,234,195,96,173,112,84,70,130,228,216,52,120,191,26,97,1,210,179,213,177,56,78,64,163,121,251,41,190,142,141,86,6,98,184,117,51,48,162,235,209,45,180,29,144,132,4,184,15,191,57,132,239,22,121,151,103,7,234,141,27,225,153,57,225,4, +222,46,10,172,166,132,57,164,106,179,149,27,99,3,30,204,66,91,237,106,117,199,18,197,248,212,38,105,240,80,180,23,225,43,125,198,149,49,3,174,207,132,147,8,80,84,9,141,110,226,173,79,208,148,241,70,132,207,46,28,235,115,146,150,101,177,133,1,209,30,6,238,20,11,177,179,254,233,45,124,212,63,211,113,228,161,43,157,115,195,250,145,5,214,118,35,114,57,237,55,45,232,124,29,141,88,15,87,185,59,76,137,182,152,134,40,168,227,192,24,99,105,215,237,215,115,211,129,72,129,160,115,200,135,52,67,139,163,142,204,102,104,72,185,235,226,14,30,237,247,160,198,54,22,70,55,69,187,83,196,230,229,209,221,222,253,162,215,121,100,221,162,180,180,154,41,154,78,167,220,233,25,225,110,140,184,57,220,38,78,139,103,104,181,127,111,149,146,27,77,180,110,81,182,179,195,166,25,115,207,225,126,91,76,192,115,250,140,141,246,193,248,190,218,42,110,156,69,47,47,181,24,186,102,187,215,187,227,7,251,29,198,65,33,121,90,166,218,52,181,215,83,29,29,10,102, +128,65,104,195,215,91,66,58,99,82,31,95,220,45,120,196,121,141,8,112,206,249,189,98,127,59,41,53,67,141,59,184,184,66,167,216,32,217,113,226,232,70,31,19,29,210,229,212,123,155,227,34,217,70,118,50,55,62,20,69,53,202,138,173,8,67,163,85,102,89,21,79,209,226,194,6,21,157,172,21,45,246,54,53,174,247,153,232,235,227,220,229,72,96,98,175,56,178,206,216,229,168,15,214,228,43,157,246,160,44,228,137,16,39,227,52,26,2,175,218,63,212,17,236,42,147,221,164,227,32,185,177,228,113,239,161,18,179,228,247,239,204,241,183,184,125,233,184,178,19,205,51,165,116,9,172,192,41,182,122,9,97,181,56,184,40,219,176,145,145,199,91,253,60,71,235,70,108,158,212,41,56,104,106,139,182,174,51,70,211,152,225,3,151,127,101,143,57,209,193,73,147,1,31,152,178,17,23,144,198,158,213,93,184,143,33,15,183,247,90,165,73,141,204,186,31,116,30,120,7,183,247,213,172,225,100,128,21,89,150,74,164,22,108,6,139,205,144,80,27,188,60,34,19,48,78, +205,236,110,232,38,242,19,113,227,54,190,89,56,146,148,15,28,37,17,170,108,190,112,176,187,57,178,237,141,30,59,125,26,151,38,222,170,50,142,206,26,29,253,225,108,206,239,18,117,236,114,90,184,188,213,66,127,79,116,100,104,61,126,216,115,140,36,134,108,145,212,50,2,19,48,112,25,4,226,242,98,79,97,118,42,218,45,74,249,231,72,152,195,198,253,92,163,155,142,64,183,117,174,244,69,125,61,244,14,203,46,66,127,40,200,40,157,198,142,149,220,184,97,50,155,206,238,106,51,187,206,86,164,159,106,195,141,174,228,104,216,97,131,11,79,14,41,59,67,123,83,86,12,114,7,137,14,113,244,67,19,194,156,83,131,211,247,240,68,130,61,119,55,114,1,181,64,150,244,137,182,194,8,140,105,118,154,185,110,245,184,13,219,29,131,240,69,114,44,59,28,161,225,108,193,38,184,44,102,113,97,7,143,218,182,240,236,165,145,180,178,195,76,137,80,58,248,13,230,68,44,71,195,245,166,11,205,245,102,214,250,70,235,134,7,41,154,60,176,249,184,10,61,188,55,165, +26,47,30,136,208,14,186,6,189,192,219,54,219,14,117,113,86,78,226,167,7,198,143,210,217,144,136,199,24,173,159,155,193,243,76,109,9,28,222,20,244,139,72,240,21,35,22,67,167,117,31,21,199,179,233,46,134,117,207,76,227,204,206,31,239,206,46,186,132,94,110,223,17,131,137,183,10,205,13,44,36,157,132,235,70,34,13,123,171,51,40,222,222,140,52,190,43,60,222,207,194,67,241,124,118,39,25,79,237,29,162,29,14,81,151,109,120,104,49,220,108,91,115,238,142,15,50,11,243,71,236,184,29,112,20,195,142,131,252,156,231,176,49,138,61,226,78,5,177,174,153,1,141,49,57,213,96,28,207,54,28,110,169,84,241,125,94,44,3,58,49,245,232,114,243,20,129,180,191,47,234,101,44,76,53,39,137,3,76,255,8,126,53,182,200,61,210,6,224,134,6,35,98,175,209,130,204,107,83,57,59,70,228,204,249,246,10,56,193,208,74,199,234,196,128,52,217,209,185,218,144,75,14,248,104,105,58,202,130,232,50,117,171,253,187,152,32,162,125,164,171,189,141,104,103,217, +166,112,193,176,0,81,140,143,14,14,39,69,212,238,25,164,95,235,219,28,29,160,179,149,8,23,121,90,218,102,114,34,21,222,6,36,182,197,23,8,71,180,51,106,47,181,167,197,135,45,44,237,68,109,240,73,159,66,147,69,154,114,123,106,81,211,232,220,48,23,49,181,134,109,212,170,142,115,189,2,43,190,93,151,106,25,33,28,68,112,173,60,204,100,72,175,152,99,174,145,212,232,137,102,242,84,107,76,146,163,216,140,40,190,199,123,132,242,108,176,72,90,49,134,17,79,11,12,99,136,54,253,17,46,128,70,55,246,14,43,45,71,235,77,171,82,150,14,177,61,188,222,216,213,226,178,109,10,240,11,187,238,40,119,84,133,111,85,243,177,10,156,83,138,163,34,141,216,156,100,201,30,40,12,119,46,77,90,231,241,70,194,122,59,42,227,210,47,118,134,103,232,72,228,188,137,52,185,202,60,92,192,45,251,200,134,122,10,67,203,58,158,149,31,77,82,117,135,78,249,190,189,167,59,65,33,205,144,14,143,147,182,228,208,241,208,226,209,226,38,123,104,153,61,216,168, +29,236,146,101,166,38,70,181,33,4,207,86,168,135,3,130,221,216,30,213,7,26,162,77,173,230,37,197,230,50,223,31,74,102,90,210,251,202,244,254,140,114,84,174,150,58,61,125,209,72,71,15,57,51,225,113,41,251,199,69,131,202,180,119,4,239,34,204,250,3,235,121,177,187,126,160,21,69,155,51,26,148,100,26,135,238,141,53,69,24,221,82,142,55,222,56,152,152,196,170,68,190,48,173,197,151,108,151,167,230,52,52,139,120,136,191,183,62,208,230,82,202,56,116,217,73,190,153,207,236,217,129,117,52,137,235,2,214,145,116,111,142,63,62,57,61,186,78,236,220,152,11,7,226,168,78,157,81,211,198,35,33,99,250,105,139,197,159,204,53,57,247,91,80,130,156,149,168,17,12,51,99,136,81,25,114,106,45,24,38,205,77,31,161,137,166,65,60,141,63,76,89,225,241,209,137,117,225,114,119,211,188,154,180,51,90,207,159,24,177,55,216,112,244,77,161,184,177,126,187,47,146,88,218,164,106,102,187,225,26,186,95,185,125,60,26,157,241,68,59,14,99,5,41,219,129, +192,82,188,139,220,244,94,223,76,182,187,55,199,147,117,25,76,237,210,184,40,76,241,168,66,110,26,63,233,247,162,150,90,123,34,148,121,214,130,114,27,199,97,118,116,224,69,228,21,26,130,183,76,108,151,183,53,15,246,34,13,237,72,100,132,184,186,198,117,153,41,172,81,69,24,215,76,5,178,205,108,47,38,17,57,44,206,103,66,91,123,58,93,206,107,103,235,157,115,98,213,110,119,180,39,189,190,72,45,8,123,83,209,37,254,118,97,189,208,133,108,219,243,176,139,107,177,116,95,198,216,121,108,236,105,95,48,175,168,39,244,67,11,91,43,121,215,97,49,151,210,153,242,147,2,248,132,195,181,152,154,223,112,229,125,118,53,149,85,239,83,88,145,38,234,52,9,174,107,21,72,40,122,236,86,103,61,205,213,102,22,80,232,140,238,52,124,34,209,77,230,178,40,210,77,34,54,229,153,237,239,15,239,208,215,73,2,230,198,130,108,165,95,193,157,117,110,199,225,166,33,215,148,47,80,200,23,152,12,195,58,75,55,22,56,158,112,173,217,215,214,178,115,193,61,151, +7,69,239,75,11,145,50,227,74,187,57,210,16,88,98,238,198,22,145,99,172,198,232,2,153,215,137,225,138,88,212,152,25,133,166,162,89,43,13,212,25,254,166,111,120,63,190,136,104,150,137,58,241,130,206,14,105,31,26,35,2,42,246,110,162,80,45,113,123,59,124,168,6,179,195,20,30,14,164,136,29,174,25,46,66,207,235,31,58,136,155,152,252,246,53,11,121,240,128,228,216,77,209,237,77,8,78,42,217,156,223,65,132,98,237,217,134,68,31,207,106,52,2,217,84,139,190,3,197,238,69,161,154,118,185,230,24,102,151,4,23,248,59,152,70,184,213,232,166,143,59,49,72,230,124,96,209,23,215,203,241,4,28,217,190,160,15,27,113,237,115,98,36,206,139,212,237,37,38,140,188,237,117,13,126,191,37,179,82,216,235,157,152,65,133,183,139,228,185,112,26,225,155,91,237,237,221,148,246,46,173,204,207,175,44,175,205,59,227,69,197,208,214,138,141,90,84,225,15,59,242,219,158,169,108,33,89,156,242,228,101,124,197,86,95,253,14,213,152,238,105,103,212,119,54,69, +138,234,9,68,160,201,29,128,251,140,198,149,169,253,169,212,204,132,113,85,234,106,35,107,151,11,153,40,111,102,235,200,40,98,76,53,99,77,44,54,134,234,140,195,109,43,237,112,195,28,28,135,65,30,160,230,67,206,92,31,9,175,234,196,116,91,156,222,37,127,227,172,77,39,67,173,153,48,234,158,173,158,173,121,59,1,33,36,100,172,190,108,119,89,188,25,110,203,207,129,117,240,97,219,176,192,61,135,235,27,95,181,13,75,3,203,132,86,60,57,198,109,220,84,135,122,178,45,158,152,63,46,95,131,163,217,178,184,115,175,37,105,156,148,34,253,2,91,19,50,151,66,82,234,199,45,179,204,48,156,30,178,249,172,200,157,101,156,24,127,124,72,23,200,177,219,131,106,131,57,188,106,163,218,13,115,54,242,4,99,170,205,88,111,161,43,231,88,243,70,92,159,103,17,209,194,235,95,57,134,215,183,248,173,140,109,194,58,50,199,52,168,196,245,91,118,79,36,205,96,75,117,88,39,126,98,78,53,204,87,161,116,234,142,80,106,125,215,61,234,48,17,169,38,82,106, +160,45,71,30,98,198,244,66,166,112,118,96,71,150,17,17,29,222,35,211,52,182,185,176,180,17,108,219,46,2,150,164,30,26,144,171,250,213,110,148,16,222,75,238,103,21,247,201,141,51,75,83,252,93,155,103,165,144,137,236,134,251,138,115,7,83,90,45,187,112,32,157,247,204,20,23,143,226,218,53,91,111,113,191,59,175,90,95,158,85,247,246,113,134,150,237,140,163,229,89,110,23,214,133,159,34,31,77,204,108,243,83,92,91,161,167,152,91,153,115,217,139,67,202,65,170,96,122,186,111,159,223,188,225,194,43,236,86,153,196,228,11,145,6,81,134,165,68,231,82,56,168,60,108,113,10,13,173,188,212,49,133,151,82,46,213,207,180,186,165,222,238,148,1,61,136,116,44,237,12,106,251,230,11,238,34,80,199,21,38,11,142,35,40,239,90,29,34,133,119,178,131,71,210,97,55,189,93,212,207,53,47,140,33,41,148,148,90,4,15,208,156,236,190,156,121,77,72,206,89,91,146,125,67,109,54,255,198,180,38,179,96,108,108,8,25,164,252,54,239,204,204,56,215,236,149, +132,84,109,218,9,137,164,105,218,207,176,19,167,26,214,237,108,124,43,210,103,18,122,209,100,188,127,186,35,56,40,139,142,123,165,227,93,245,154,163,216,224,212,33,142,206,223,232,194,169,104,34,230,94,140,208,206,106,13,137,230,201,58,148,132,109,16,142,140,21,89,172,132,147,27,159,13,146,209,211,189,82,33,155,54,39,232,180,225,105,38,120,155,205,234,116,110,163,5,177,245,248,124,243,14,201,69,65,53,99,155,221,71,27,193,134,237,40,55,50,163,30,148,107,250,99,227,35,114,149,115,99,73,40,139,70,35,209,222,253,166,158,174,104,119,110,113,97,35,183,155,198,106,115,133,236,26,95,215,174,45,140,236,230,242,197,229,66,161,93,212,115,144,95,201,207,197,34,217,48,90,120,160,238,26,202,140,247,69,36,93,1,190,88,212,63,44,91,92,201,108,44,186,143,100,61,7,235,11,83,19,150,214,217,188,39,53,237,159,167,48,194,113,175,109,199,208,106,34,224,19,120,94,43,185,157,176,214,88,236,217,96,15,143,50,15,2,86,195,170,216,230,111,151,209,77, +122,146,188,171,203,214,183,67,105,113,172,186,178,179,125,233,60,61,154,76,36,151,11,135,209,65,39,159,13,58,160,109,194,4,55,32,148,14,21,80,253,157,27,217,37,137,105,223,175,92,213,31,99,186,201,59,222,129,35,2,42,27,216,59,108,112,89,41,202,141,1,158,80,48,221,167,88,238,92,239,112,31,17,194,195,65,157,35,197,29,112,51,182,133,235,84,115,51,118,194,180,153,101,112,27,146,178,124,166,129,107,176,108,54,73,86,249,203,237,225,194,244,122,122,159,189,184,109,222,216,218,171,111,195,232,122,244,214,189,117,186,149,87,196,216,41,161,69,20,74,177,230,73,136,36,161,17,213,122,152,218,186,159,233,223,109,110,37,165,98,94,100,112,200,65,26,105,139,181,7,164,105,222,164,63,216,201,52,32,136,203,210,14,83,26,46,37,83,135,172,150,153,109,165,107,145,16,9,167,13,102,107,96,211,81,175,216,64,29,58,21,145,30,95,247,106,128,181,108,150,122,36,216,122,108,38,51,154,31,37,237,171,151,51,67,69,115,103,192,53,159,57,200,80,27,39, +180,204,241,162,118,202,162,205,201,66,81,114,113,46,19,209,118,105,237,249,30,225,94,222,50,83,148,70,204,126,58,165,191,104,157,181,53,69,184,24,126,33,51,210,234,194,27,17,75,142,181,180,125,211,154,91,49,54,41,132,235,142,61,199,136,99,101,120,68,222,52,180,151,48,18,61,199,61,62,126,251,188,111,117,117,6,87,47,76,77,185,230,112,161,70,241,172,222,97,197,185,198,176,244,190,97,102,39,210,32,205,116,175,166,18,189,104,3,98,127,182,125,3,101,128,226,65,22,138,7,252,126,154,182,77,228,78,24,53,49,210,246,156,30,88,60,68,187,42,81,143,77,205,145,164,243,115,120,23,195,191,230,141,152,116,216,198,81,75,98,174,9,163,29,71,114,56,91,77,86,158,41,81,208,52,52,80,102,121,93,141,168,240,162,204,124,184,220,96,208,33,219,112,222,121,126,11,73,224,246,106,104,233,196,52,239,255,99,234,172,154,156,229,186,110,253,215,137,187,187,187,187,187,187,39,29,119,235,142,187,123,246,253,188,223,201,174,2,42,69,113,66,214,100,140,113, +77,88,64,205,74,133,116,22,117,234,13,0,252,115,63,70,209,15,73,239,153,21,21,198,213,70,211,135,35,133,233,12,162,136,216,92,79,229,229,24,163,72,50,242,182,94,33,38,9,4,67,78,32,68,22,238,179,200,245,133,3,2,56,66,48,132,90,189,2,46,195,61,14,130,40,105,137,81,223,219,203,25,188,240,93,231,132,202,141,212,120,17,130,12,187,149,184,176,124,38,53,59,35,39,21,180,242,254,87,11,178,81,114,39,169,57,188,204,8,177,239,133,89,131,3,55,177,229,60,25,218,249,89,205,65,160,219,237,83,3,163,174,152,210,227,138,155,34,17,135,63,158,238,209,3,203,139,119,41,250,175,75,110,243,123,85,110,133,83,191,122,199,74,134,131,108,139,36,6,94,46,199,42,210,95,160,251,142,70,157,198,90,96,158,156,89,38,113,254,43,199,213,196,38,16,237,119,95,134,23,156,68,121,168,75,120,87,154,212,237,18,69,115,136,209,242,126,141,14,155,228,250,120,238,47,15,99,186,192,60,73,235,193,18,98,94,249,42,254,41,169,122,1,172,188,144, +154,226,161,17,229,40,7,193,70,108,240,186,104,230,170,103,184,157,114,11,191,69,138,0,209,188,131,224,126,65,32,20,105,199,244,67,120,167,88,49,81,56,177,251,194,255,107,163,38,194,223,154,84,248,25,232,225,74,252,220,59,84,113,104,31,91,46,99,89,124,103,168,77,42,109,169,83,127,54,85,165,230,220,139,64,142,121,63,140,24,226,162,5,218,188,181,242,246,20,51,237,13,61,231,80,198,91,160,156,3,73,25,33,179,81,102,162,60,154,190,20,135,138,211,168,248,96,218,119,122,71,244,160,243,226,197,87,39,82,69,241,176,18,35,77,64,39,14,22,9,60,177,46,27,247,167,14,208,169,58,31,201,70,206,240,201,105,193,200,8,167,248,169,104,19,120,128,134,200,19,3,6,180,194,253,16,214,177,196,43,204,40,234,182,119,165,50,114,56,138,87,161,121,165,160,108,18,108,251,67,19,164,45,64,188,37,215,136,242,141,174,25,157,161,126,251,74,127,230,69,104,132,229,102,196,190,111,230,192,249,177,249,140,70,7,224,116,250,189,221,6,187,171,80,225,104, +247,187,205,214,100,53,171,216,42,14,180,141,234,168,83,35,80,111,169,251,210,143,202,6,187,108,251,109,93,246,91,126,85,208,175,210,222,179,146,78,111,182,211,177,214,16,45,119,170,229,57,26,255,196,173,158,184,53,161,179,165,91,181,196,23,243,128,222,61,247,219,89,161,239,56,219,24,132,127,210,132,244,196,63,87,14,252,167,220,182,40,192,160,228,231,233,239,207,44,194,99,224,88,103,245,125,76,35,250,7,177,38,167,117,81,139,99,211,87,51,36,146,230,96,216,39,8,27,1,161,196,174,221,199,133,192,253,73,227,177,3,113,198,59,70,11,221,255,127,124,100,95,211,19,98,26,217,118,129,104,227,169,9,107,195,30,193,82,191,58,226,200,10,36,38,73,18,8,212,112,205,104,97,78,39,64,252,57,95,9,9,227,180,226,153,17,28,119,81,156,107,112,122,158,143,210,216,232,56,52,183,113,33,250,211,130,101,190,182,122,82,136,164,104,112,78,34,96,236,161,141,0,117,137,149,89,163,100,80,8,118,102,20,24,137,0,132,18,150,217,205,218,89,189,228,12, +170,11,30,168,177,124,72,132,91,185,172,138,195,201,36,242,211,81,184,27,72,229,11,96,108,232,254,51,133,8,104,133,89,178,110,162,133,56,227,36,246,168,200,172,100,145,5,150,177,198,18,1,195,194,180,83,89,249,127,241,26,175,230,111,215,92,41,150,109,152,157,70,185,15,231,115,96,50,89,140,94,167,211,234,54,80,6,158,66,195,87,19,112,88,12,137,34,116,188,218,154,173,215,139,208,106,20,182,22,24,142,86,237,175,209,223,74,253,237,222,111,158,244,234,27,223,87,20,153,70,229,231,119,61,221,76,126,68,120,5,122,174,95,0,81,171,125,32,182,140,228,22,242,9,48,245,187,158,70,159,100,181,46,58,44,126,207,220,102,91,154,142,236,83,140,199,88,176,134,127,44,241,221,206,213,134,225,157,91,162,235,190,87,228,218,248,40,17,145,70,43,178,82,76,167,96,50,168,110,21,133,163,162,51,64,120,0,144,59,114,6,69,238,21,71,35,234,111,74,252,246,170,112,228,127,128,15,243,255,95,224,170,62,8,109,1,140,100,192,221,69,104,150,135,85,82, +50,144,116,62,105,252,162,227,61,127,227,77,66,10,54,134,120,78,18,46,109,20,184,76,186,7,240,72,185,201,18,103,10,214,145,243,188,111,87,32,92,50,32,9,1,148,27,134,120,117,221,120,16,6,211,69,231,152,60,48,3,216,204,64,92,152,61,31,219,140,85,205,174,59,129,101,74,130,65,17,130,113,153,197,12,42,157,139,68,201,146,145,43,86,166,44,22,70,144,69,176,248,169,163,126,253,110,220,159,30,194,98,107,118,150,1,24,128,162,236,193,11,227,192,190,232,210,42,21,88,112,21,34,47,196,83,178,65,11,190,149,163,66,129,67,98,94,144,84,98,74,79,188,185,204,236,242,0,247,79,135,217,243,40,212,12,6,59,145,52,162,154,114,146,69,47,133,87,27,145,63,130,240,235,191,245,121,248,177,46,30,222,175,182,111,156,86,186,189,233,108,179,153,204,102,53,219,121,201,113,121,60,109,207,41,23,223,117,199,211,39,207,47,43,171,125,36,80,169,113,159,154,68,163,242,59,166,248,186,15,226,7,90,44,39,164,197,244,133,184,251,118,238,251,203,166, +210,127,104,251,29,23,187,102,145,150,22,253,165,146,91,166,113,112,150,234,214,66,211,206,10,214,142,44,110,163,27,23,154,23,251,26,145,80,122,242,130,184,97,167,216,74,126,194,119,77,235,80,48,23,239,211,8,80,77,124,167,190,247,197,192,228,189,67,169,224,39,42,94,19,168,105,245,12,248,10,129,32,116,251,211,172,103,232,126,44,96,174,239,250,77,152,25,29,221,252,26,254,129,227,127,67,198,252,47,36,247,77,168,16,50,65,151,42,145,178,28,17,111,4,16,65,160,180,188,148,149,34,30,67,22,217,67,153,17,131,10,88,83,228,80,213,10,221,51,92,94,233,151,173,148,151,113,104,162,159,24,28,200,208,130,2,33,201,11,179,185,31,8,104,255,62,184,93,18,82,68,190,143,139,83,196,36,88,179,49,44,140,231,66,101,24,17,245,241,25,41,151,50,222,204,169,182,134,220,0,77,84,237,247,144,16,216,97,59,141,135,41,95,166,205,186,85,133,56,216,60,145,180,94,153,112,163,72,243,252,25,50,151,21,166,75,10,222,173,36,66,128,215,105,238,6, +109,42,190,229,146,254,5,106,120,95,103,23,141,43,12,249,4,79,21,126,112,108,123,118,24,225,170,18,69,235,218,198,61,56,35,73,219,24,130,9,117,175,158,102,207,231,241,162,119,119,86,254,111,42,63,127,149,73,198,102,0,79,207,113,44,24,204,144,82,30,143,37,239,200,231,253,0,233,107,254,252,157,222,3,160,122,85,66,80,252,41,55,91,227,21,103,185,89,205,127,28,151,218,165,50,111,107,60,236,248,191,209,200,180,23,232,65,74,166,179,237,92,210,190,77,238,212,201,27,125,121,241,167,95,243,151,154,20,95,165,31,232,151,125,254,177,150,249,67,203,51,1,53,253,185,168,33,56,239,28,197,157,187,135,120,125,219,220,167,59,191,61,155,119,127,110,122,142,159,86,170,111,13,115,25,98,172,208,71,180,102,11,182,5,33,32,36,194,166,98,228,47,241,35,255,221,85,200,74,175,249,17,191,75,169,182,223,157,52,47,210,67,7,214,221,100,28,143,104,65,60,51,51,243,123,188,104,254,75,123,151,35,173,230,158,194,108,134,91,22,151,241,111,170,223,0, +244,191,89,151,92,51,226,135,113,25,91,60,165,110,219,171,216,31,164,159,14,181,20,24,174,184,7,91,56,231,105,79,10,237,233,38,105,81,110,104,125,166,209,6,117,244,204,9,70,127,216,127,55,208,62,255,234,194,20,56,98,9,109,40,84,202,236,14,26,43,241,68,108,251,208,6,193,54,170,176,71,222,203,143,234,2,43,180,189,234,241,179,39,105,159,22,12,47,11,254,183,157,162,9,191,238,206,254,172,187,121,106,146,119,119,9,42,22,90,52,225,149,71,91,181,9,133,11,7,12,153,20,145,37,79,149,160,241,165,134,148,131,208,229,53,146,126,251,103,214,14,191,144,40,117,163,229,32,228,97,188,109,240,63,193,39,165,232,63,79,115,106,72,208,183,81,70,203,54,97,7,240,44,108,41,183,109,29,51,155,188,92,61,61,73,105,92,40,134,236,10,206,116,153,110,237,46,212,164,53,56,53,113,196,227,206,117,36,189,184,97,211,63,70,56,39,141,231,75,9,251,137,121,199,94,33,158,125,210,29,188,143,40,232,5,218,148,109,52,161,115,210,2,57,244,61, +117,22,11,142,42,187,134,180,109,71,105,104,123,140,7,160,110,198,95,135,109,134,43,227,77,85,232,58,8,54,120,177,90,30,175,116,212,115,183,91,50,166,39,27,9,7,10,197,222,141,92,38,21,84,213,100,225,140,73,116,12,34,33,122,0,227,137,44,28,47,152,202,120,51,231,1,3,112,50,254,128,249,105,230,202,94,53,8,64,184,19,45,203,128,192,36,161,18,230,225,218,66,226,157,112,160,61,254,58,131,54,238,38,123,66,66,92,27,208,28,101,170,240,207,138,116,7,185,224,70,230,84,207,142,144,195,15,105,142,91,171,238,178,175,136,36,2,125,54,126,39,255,109,24,4,139,216,81,103,6,139,159,236,231,7,187,253,240,180,158,110,168,231,129,37,70,173,44,179,103,1,34,186,39,105,41,82,12,144,214,231,63,217,26,247,199,19,58,139,224,122,171,215,30,205,148,89,214,202,192,180,214,12,78,172,93,123,169,101,207,183,106,158,147,158,96,105,164,12,209,143,117,172,242,121,150,125,250,188,214,226,222,53,231,120,241,173,35,117,197,178,33,64,92,39,92, +231,1,239,172,220,14,154,203,29,49,212,162,149,38,0,141,225,193,109,69,88,114,191,22,246,253,197,204,111,81,13,255,131,105,201,218,232,81,159,149,132,68,201,96,39,217,251,141,20,225,178,5,210,15,69,198,44,203,226,127,29,248,200,219,123,214,222,66,131,140,50,180,190,16,133,240,143,61,104,146,20,4,54,127,44,244,117,228,221,28,171,188,0,224,113,229,205,10,136,30,179,42,37,140,10,101,96,51,189,225,49,184,155,56,192,167,134,93,43,17,210,215,251,242,30,61,122,43,77,47,98,251,217,33,232,155,146,101,2,182,63,179,109,112,7,71,104,70,252,59,190,11,134,167,3,200,138,89,204,40,191,192,24,233,8,156,15,123,150,22,17,181,49,104,222,105,110,168,115,120,14,42,81,122,108,251,150,21,134,102,68,16,9,204,113,69,120,207,250,113,209,4,19,132,204,127,97,128,210,21,96,248,84,1,131,63,52,93,117,64,150,219,209,227,35,2,239,140,80,222,141,197,220,157,69,102,133,241,139,215,215,207,190,198,88,101,79,26,22,49,232,143,144,235,238,65, +98,115,221,252,212,175,42,141,103,89,127,17,109,54,36,56,154,142,190,194,40,129,145,217,200,158,132,188,127,36,239,49,178,237,2,44,57,52,204,47,57,10,216,168,33,169,179,135,124,122,252,9,101,138,217,206,223,248,32,237,117,81,233,247,129,82,60,48,165,96,224,238,34,112,107,104,39,173,215,108,196,209,85,121,69,1,215,35,14,31,139,61,57,254,182,175,164,13,79,156,135,64,41,9,133,63,160,72,111,40,21,188,146,67,213,68,118,129,4,161,146,146,24,178,93,192,48,255,210,11,169,214,112,126,134,43,107,221,95,178,202,249,23,33,125,248,103,55,55,220,242,125,151,79,59,8,65,30,80,117,106,207,14,53,38,115,91,145,178,72,98,222,205,85,215,32,196,135,211,58,34,30,63,195,157,151,119,194,226,247,149,222,253,90,191,217,43,202,122,91,184,82,20,72,212,9,125,201,118,27,3,201,97,110,92,14,64,70,150,117,156,95,150,174,87,154,243,82,3,244,101,179,53,39,119,91,131,205,209,30,223,248,1,239,254,201,195,191,255,50,72,122,190,97,127,207, +195,248,223,167,5,251,242,23,205,252,1,182,169,171,171,32,248,177,209,166,92,176,251,169,127,123,157,204,147,118,247,199,104,105,14,119,238,78,200,201,67,124,130,220,0,15,69,186,195,6,187,241,32,27,2,105,4,137,82,66,40,13,35,253,231,23,46,131,226,194,118,150,38,101,97,70,153,131,180,23,178,24,36,234,165,174,158,115,160,196,66,45,12,174,19,237,79,41,192,65,110,42,248,194,233,113,78,64,179,104,229,3,87,237,125,159,52,157,92,86,63,139,213,143,108,239,225,8,125,48,37,51,24,162,34,148,253,209,50,222,96,199,183,75,8,101,162,92,157,251,193,76,140,144,35,97,222,215,55,38,58,168,8,113,238,30,130,224,22,84,8,26,156,14,94,22,44,211,252,67,105,177,75,46,72,25,127,9,153,149,217,160,114,5,109,192,237,51,61,142,197,45,6,140,178,192,56,46,76,14,45,102,59,139,165,160,127,135,7,36,130,76,71,120,223,68,51,5,193,71,136,4,208,200,209,126,115,49,217,62,127,154,135,147,84,136,46,235,36,118,219,129,192,220,155,106, +103,86,138,178,196,212,78,54,88,163,167,161,252,70,76,221,180,18,62,198,136,241,121,172,193,230,223,32,44,91,56,119,155,57,30,255,150,242,61,129,191,77,201,64,186,139,252,48,104,29,150,134,158,205,176,27,194,18,214,135,180,178,215,140,122,196,146,71,100,230,238,87,104,18,181,34,154,177,234,236,34,41,157,196,101,146,71,64,9,45,214,155,129,201,49,81,249,24,137,106,225,159,192,151,223,221,209,49,144,7,231,18,15,222,255,91,245,237,159,220,178,103,148,251,167,251,13,210,239,190,39,6,136,14,48,30,95,191,162,173,36,104,16,4,230,119,154,234,49,19,6,141,174,184,14,155,108,141,48,183,182,134,85,241,235,163,60,185,187,253,9,235,200,132,58,162,69,47,56,91,153,14,213,45,94,91,21,14,223,153,141,242,73,110,111,156,80,172,161,70,65,86,89,118,247,111,88,238,185,158,19,174,232,204,199,108,217,9,56,111,225,122,189,216,109,246,128,213,86,177,57,106,103,137,181,198,114,179,61,88,132,206,215,229,65,222,112,112,197,192,135,146,160,107,240,80, +61,71,88,173,117,221,188,173,6,81,121,235,143,45,110,103,235,237,11,86,158,14,133,234,249,32,102,136,20,205,165,7,190,91,140,88,45,195,15,247,192,134,109,27,78,114,170,246,187,55,218,110,94,219,243,165,99,56,203,19,246,166,105,55,115,240,110,144,43,191,193,82,240,143,97,228,195,127,158,231,186,183,73,82,145,194,236,38,122,48,116,35,1,187,66,166,13,245,171,236,118,126,107,124,42,117,110,20,41,77,33,1,25,95,1,49,156,177,145,182,8,116,138,163,13,248,134,53,170,106,77,93,53,131,6,14,245,82,181,232,250,95,231,203,254,233,181,148,1,105,191,8,117,67,225,197,227,232,25,136,112,68,168,220,110,88,185,64,189,223,45,91,23,120,247,202,230,229,253,6,39,90,20,59,77,30,42,235,247,217,230,209,133,233,0,35,129,198,16,97,76,16,198,132,130,4,96,216,114,81,222,77,101,177,106,255,93,241,65,30,169,131,209,31,104,90,146,241,37,180,34,41,164,35,255,34,176,193,216,125,52,248,29,183,75,36,156,81,34,129,90,207,156,51,204,156, +0,124,127,114,149,56,22,223,60,0,69,243,223,201,107,193,58,184,194,38,66,82,246,148,144,148,193,31,86,59,148,18,141,158,242,223,110,49,140,185,195,59,248,218,13,216,8,55,251,166,33,145,211,100,203,230,246,252,142,173,25,139,99,127,119,126,124,150,184,119,250,249,14,138,5,91,127,237,229,147,208,37,187,97,225,48,204,112,0,177,192,56,34,55,229,216,61,107,68,81,236,247,3,28,90,85,1,83,46,194,173,86,145,222,96,186,14,167,133,92,134,210,122,121,249,124,28,199,237,213,189,147,246,144,81,155,53,199,88,144,181,22,140,158,242,99,186,131,43,173,7,175,248,169,220,169,25,195,60,3,170,255,207,47,65,18,120,61,57,14,22,209,170,204,56,2,213,91,113,142,217,151,75,182,255,121,188,144,30,26,241,83,215,59,193,224,9,43,4,8,227,193,197,147,65,201,63,65,47,43,211,252,103,196,209,241,83,106,203,186,11,63,16,238,63,185,56,31,50,90,166,184,136,26,114,150,174,252,45,60,19,239,213,216,175,148,133,254,120,126,222,96,221,130,115,149, +55,172,243,112,45,43,62,165,195,19,234,184,251,233,62,173,115,17,55,62,30,73,148,21,6,189,42,83,4,239,193,127,80,2,36,138,112,22,51,245,238,166,226,184,88,215,21,107,157,225,168,210,83,54,91,109,209,94,186,241,167,115,28,239,6,160,216,40,241,49,65,243,98,31,226,227,241,227,167,31,126,75,221,106,231,186,198,202,76,139,159,162,169,86,250,181,99,0,230,188,203,42,45,221,29,94,167,59,67,217,242,172,122,220,173,213,99,198,30,14,7,129,87,77,83,194,9,90,145,71,142,167,80,100,134,128,174,128,66,216,160,171,8,149,66,78,231,27,238,91,243,53,255,160,215,145,95,182,121,53,53,175,116,85,165,50,11,82,178,8,17,64,133,154,18,97,196,90,119,8,27,119,73,55,106,120,20,81,25,170,181,175,48,219,114,183,214,196,203,75,98,252,141,44,69,8,6,34,156,80,167,178,77,96,39,23,177,176,132,49,50,197,0,230,115,185,35,147,50,111,174,28,222,185,236,247,90,217,61,45,233,136,55,145,152,217,65,102,211,107,4,227,58,230,224,43, +82,112,216,192,246,70,202,1,4,152,226,132,244,125,191,201,236,58,22,236,6,33,36,36,154,138,17,106,174,248,252,38,170,184,0,163,178,231,6,250,252,190,72,120,241,189,191,137,23,229,72,34,150,180,255,51,194,213,170,198,200,113,115,67,128,48,85,8,224,222,75,250,218,244,23,185,237,217,102,232,49,65,129,243,234,112,126,142,81,76,108,164,125,180,30,95,185,187,17,132,63,208,87,81,210,36,91,38,70,159,54,255,38,149,219,219,246,93,255,110,1,236,177,141,200,154,206,111,248,181,229,93,156,209,41,93,17,67,53,12,194,232,179,132,66,83,187,170,18,178,83,113,106,20,88,225,148,74,33,135,1,96,140,73,163,8,80,138,162,0,93,68,99,108,33,199,147,80,40,20,239,224,131,167,28,115,174,112,25,246,110,62,212,144,217,117,146,31,27,219,113,167,130,1,48,69,168,116,107,198,137,156,233,85,145,202,149,108,40,104,20,231,253,48,112,76,96,57,168,119,32,82,248,45,132,18,31,206,106,124,164,35,202,31,210,199,245,114,78,252,153,147,119,23,36,174, +101,197,36,64,147,14,137,114,248,225,89,132,19,240,220,183,69,191,50,180,158,19,106,53,113,181,107,94,158,181,218,29,151,237,99,102,210,252,198,108,44,151,76,197,250,222,81,169,57,169,84,10,128,64,126,62,63,159,255,188,49,165,226,79,181,217,108,173,87,144,6,72,56,49,22,21,138,224,236,161,241,180,159,158,214,121,61,59,235,112,180,51,45,86,183,209,4,237,133,230,244,89,219,124,188,92,55,24,65,94,216,239,140,236,231,44,2,101,136,110,55,57,192,151,155,69,118,116,106,243,174,50,245,35,169,207,254,82,218,78,106,205,197,191,214,118,237,149,169,181,68,0,11,237,241,243,113,228,195,105,40,239,73,245,9,235,250,218,37,85,31,206,66,186,37,115,156,48,169,247,165,42,170,244,32,54,160,74,128,16,52,90,12,177,49,8,37,182,6,163,134,94,146,78,31,152,96,112,55,125,20,161,145,8,147,108,148,59,138,36,162,247,224,16,56,166,165,38,209,93,185,97,83,142,9,151,255,123,226,194,240,246,130,40,219,144,59,105,171,173,72,36,78,200,144,90, +39,197,62,255,69,65,29,132,65,90,187,226,25,186,182,34,0,234,114,114,25,160,100,44,156,142,109,110,151,90,6,152,232,234,138,107,116,68,78,20,110,176,12,130,98,191,248,160,116,234,132,204,161,216,100,121,14,121,159,143,160,27,122,150,133,149,171,28,12,18,145,214,129,143,176,65,54,68,123,168,189,225,58,233,221,223,20,143,89,236,64,252,253,20,79,244,19,39,9,111,150,148,24,5,65,178,6,112,0,38,154,32,77,127,233,172,115,140,4,77,76,1,57,242,243,100,109,18,70,155,205,10,70,82,40,136,241,138,248,147,71,33,148,177,125,8,96,219,12,180,20,153,83,137,229,38,7,251,83,6,105,74,52,108,204,235,71,225,206,126,199,183,225,120,211,118,240,171,16,80,42,226,227,175,96,202,160,253,10,58,148,110,235,91,51,71,48,105,173,198,88,33,198,49,247,171,86,143,34,14,62,203,166,92,47,98,6,138,165,28,12,129,136,42,252,53,106,241,225,23,183,175,108,115,163,189,91,229,39,174,59,78,52,12,107,26,126,119,146,189,35,99,135,193,245,51, +152,18,73,115,169,142,119,194,76,45,61,16,128,213,193,115,126,64,224,85,182,113,129,160,79,112,48,194,195,165,208,200,150,36,37,201,127,45,19,15,245,91,102,142,93,109,4,82,57,32,41,134,132,152,175,69,141,104,33,136,188,9,226,190,238,244,63,199,30,114,49,64,94,96,184,75,49,100,59,216,9,112,217,30,239,106,95,27,119,17,48,10,66,252,171,189,242,77,205,150,215,188,184,157,240,150,99,222,148,152,230,125,89,3,203,209,126,124,91,236,129,223,215,229,247,52,250,13,206,126,111,187,221,77,24,253,222,132,132,130,251,196,190,92,206,75,16,198,71,174,96,227,214,147,153,199,57,65,146,8,123,111,252,201,56,68,38,159,75,45,240,187,165,226,223,200,31,97,158,144,187,15,145,231,190,27,44,180,9,34,211,210,226,171,213,59,165,26,185,216,106,213,127,194,156,51,11,123,150,117,113,50,23,68,247,247,206,201,222,233,156,204,135,147,141,225,117,54,173,116,105,31,4,182,178,217,237,171,219,204,177,138,185,84,114,121,132,233,54,139,231,104,217,47,109,2, +47,193,7,52,220,233,73,102,232,17,93,239,128,213,125,155,138,131,54,141,231,154,220,184,179,238,144,7,63,148,68,79,31,103,39,132,84,174,132,95,38,11,45,146,81,137,36,75,40,140,67,34,131,194,10,128,150,134,234,66,109,168,248,71,253,219,38,29,253,171,240,127,13,16,231,125,217,222,129,90,140,253,139,135,249,68,200,129,27,134,69,98,55,208,0,158,241,167,34,209,167,104,180,209,244,75,136,88,77,26,112,41,106,60,166,8,149,226,44,241,188,159,48,173,198,20,166,197,110,97,242,33,205,127,18,38,71,222,189,220,20,94,194,100,209,7,189,157,72,204,130,104,147,75,181,203,92,190,153,218,40,173,227,41,134,188,11,230,114,235,124,184,75,239,67,42,9,237,191,176,72,173,130,76,64,219,254,36,8,197,99,34,85,217,164,243,3,223,25,29,121,134,160,79,48,240,163,24,134,235,62,31,142,80,171,158,113,6,192,234,65,135,97,180,171,107,127,150,29,139,102,8,201,97,72,55,124,73,203,134,48,24,171,45,151,4,255,219,209,242,179,115,80,54,149,101, +184,162,211,51,248,7,239,73,154,96,196,216,61,0,17,77,50,227,55,71,32,141,106,149,112,69,134,226,95,84,239,147,249,190,23,102,118,10,24,117,157,247,83,126,97,134,190,194,121,5,97,202,103,106,63,138,230,23,170,247,99,172,233,93,72,86,140,174,244,0,168,132,124,140,211,135,82,123,49,121,109,23,25,206,1,217,33,212,121,20,208,134,90,30,201,47,70,172,183,228,160,204,51,43,144,129,228,158,1,22,7,115,22,214,200,153,68,90,94,114,102,217,164,159,233,149,175,157,2,186,181,207,74,104,132,180,8,155,83,212,194,181,179,210,83,130,34,133,33,158,215,17,89,70,74,148,48,63,58,245,119,221,137,145,217,57,198,29,62,222,7,211,181,217,223,57,231,160,197,234,217,9,199,130,14,159,207,94,9,233,236,25,139,101,61,225,48,108,247,29,31,23,234,175,105,157,96,210,24,20,242,167,49,48,157,9,167,24,99,223,89,92,2,214,253,233,12,17,182,30,110,98,187,212,213,9,123,99,255,145,225,7,217,237,163,207,65,165,87,59,197,39,234,184,218,84, +56,177,117,60,254,108,191,48,217,110,95,123,217,226,164,57,203,78,134,173,65,47,213,232,237,98,224,160,197,214,213,187,0,119,142,193,221,133,175,22,100,71,179,248,240,237,121,143,95,187,198,15,242,172,29,222,70,110,207,36,12,52,202,46,236,77,18,129,151,223,6,57,57,10,172,176,17,187,20,238,136,103,200,14,69,207,115,149,139,243,167,250,98,150,233,39,142,44,196,84,184,159,93,1,77,218,29,96,169,219,58,236,122,163,81,33,32,116,2,193,138,87,119,51,77,225,119,197,135,170,214,83,132,204,108,1,245,127,55,79,79,25,144,172,75,86,143,77,197,208,153,9,8,8,162,104,184,241,225,214,234,248,98,62,178,201,180,10,63,66,203,67,226,122,48,153,93,220,27,215,10,251,150,161,124,228,15,24,170,128,224,188,232,0,241,196,255,178,222,146,213,85,118,48,175,221,253,177,255,223,11,163,208,82,128,228,225,35,101,35,179,241,7,230,160,253,50,204,227,63,158,211,208,112,229,248,80,51,71,79,117,222,86,255,120,235,87,148,132,18,65,225,218,47,52,109, +85,75,73,202,44,82,157,91,15,132,160,33,28,141,243,135,180,64,135,206,41,125,21,201,163,34,55,23,227,186,228,22,13,141,136,215,53,137,148,144,4,120,49,81,61,224,185,129,227,43,103,212,151,185,231,241,114,12,187,100,9,232,43,170,245,124,112,198,204,241,202,236,199,174,109,150,236,188,97,64,123,155,196,145,235,44,34,129,8,57,144,144,3,205,112,23,169,229,249,106,23,93,186,192,203,37,170,71,131,119,166,48,53,230,200,203,195,241,40,249,125,182,232,213,98,119,33,189,115,239,225,93,170,131,50,90,125,192,42,133,193,21,26,18,155,131,55,246,93,112,15,189,229,86,64,129,28,12,118,14,123,49,202,235,226,168,123,240,132,117,60,147,162,179,184,186,47,173,20,144,243,135,6,157,109,30,210,143,40,120,109,106,216,28,18,107,255,118,255,233,108,104,19,80,80,148,230,162,179,242,87,26,164,205,106,135,162,127,46,23,104,105,252,199,155,244,148,5,156,204,23,138,72,90,133,132,95,215,20,68,12,121,220,217,183,211,97,119,217,45,168,74,192,93,245,25, +23,243,25,127,86,191,58,108,159,171,221,190,224,112,218,244,54,187,221,98,183,219,77,78,251,188,94,119,121,95,248,199,191,25,134,122,2,17,72,31,250,228,179,120,217,217,122,190,66,24,38,246,195,195,9,30,175,132,229,18,231,110,189,219,192,57,113,252,91,142,239,196,72,46,149,251,155,2,193,232,57,86,202,68,96,206,82,221,209,169,183,150,24,229,118,165,217,44,181,233,165,82,175,215,25,212,7,237,189,81,58,249,229,247,223,200,187,153,152,160,3,4,29,77,208,82,251,67,182,58,35,20,52,137,9,26,246,82,213,231,45,252,189,153,78,48,215,242,59,75,131,96,189,109,240,54,44,27,251,95,241,19,126,186,254,160,144,20,191,102,63,119,134,247,231,164,162,171,9,0,21,213,117,119,54,240,164,103,143,120,89,24,154,128,54,43,164,135,144,219,2,89,232,244,160,135,83,3,189,48,82,85,100,39,67,47,126,219,245,252,134,255,233,39,241,110,209,34,78,247,120,69,40,28,244,157,135,36,145,219,114,101,119,175,225,104,167,110,235,79,58,35,228,210,19,102, +179,155,132,92,88,156,201,221,216,150,33,66,249,23,59,180,36,126,116,114,221,15,128,77,17,1,214,7,111,193,165,246,184,11,15,94,65,21,14,132,200,140,110,143,78,107,11,185,158,163,250,221,51,212,157,119,198,80,166,49,25,20,26,61,8,164,61,88,90,89,132,65,47,12,44,52,205,10,69,109,56,104,193,254,35,241,105,237,139,205,247,53,85,170,112,54,197,133,136,59,48,69,9,18,65,54,205,92,106,251,48,63,253,92,146,110,85,116,6,121,138,2,206,229,176,205,252,106,56,168,19,32,215,110,247,238,69,71,175,221,240,89,57,103,30,28,31,135,33,139,252,28,127,47,63,200,249,175,215,0,36,224,187,202,191,164,109,232,3,155,178,109,234,12,137,82,9,74,148,186,136,222,19,181,203,68,205,246,145,215,110,85,144,164,185,213,13,107,236,199,43,178,93,69,173,127,78,77,201,78,227,51,16,45,52,205,53,118,154,39,26,89,200,130,190,248,33,96,2,247,105,0,166,147,124,59,143,235,204,72,191,69,101,210,122,166,17,144,121,221,207,227,8,74,175,17, +239,190,44,227,58,29,56,8,245,107,18,209,86,33,182,194,127,50,5,200,157,228,180,132,146,0,153,191,98,200,157,121,224,215,63,39,153,2,5,138,77,247,71,172,18,136,154,180,96,100,175,0,25,66,246,81,124,59,255,109,229,29,165,127,1,227,59,179,126,130,34,147,74,103,183,127,77,106,179,220,107,21,23,193,21,176,218,160,213,249,148,255,182,106,229,226,180,154,21,255,85,226,229,194,68,32,158,8,132,251,141,64,96,35,239,71,232,219,179,127,244,114,127,254,254,216,188,113,38,73,58,86,172,169,150,42,196,116,222,239,212,127,138,111,151,192,110,86,186,95,229,216,119,174,96,167,71,118,57,42,189,121,119,147,125,12,29,8,23,107,213,159,254,160,214,46,85,74,7,19,227,54,246,20,182,31,85,251,179,91,54,21,125,205,193,255,109,181,15,126,63,234,20,41,223,19,221,92,178,84,136,236,119,203,121,91,170,95,137,37,43,47,207,183,210,234,176,128,41,60,234,54,124,94,255,33,10,5,147,42,238,76,230,126,182,180,100,150,228,218,27,64,78,13,250,223, +173,134,118,127,95,251,122,62,187,232,196,141,49,113,194,86,156,113,139,13,133,121,96,120,24,130,54,207,88,120,245,91,220,220,81,238,22,226,79,240,37,245,142,188,167,120,61,213,29,101,137,32,182,104,64,101,1,201,192,188,151,25,77,180,60,72,225,70,148,79,101,80,123,3,133,222,62,30,170,171,225,252,164,248,2,80,255,231,130,88,39,20,161,125,255,223,254,167,199,28,88,98,199,189,56,197,238,153,202,110,72,120,93,20,94,16,107,12,35,120,12,173,10,7,96,255,115,189,211,236,124,23,254,183,119,99,155,220,63,206,136,40,163,2,131,46,91,57,118,186,136,160,112,201,234,56,68,216,249,188,37,56,105,146,192,11,118,250,252,240,69,235,108,65,74,151,102,223,96,64,177,0,188,203,113,120,166,17,190,162,132,176,106,88,30,172,137,54,173,187,11,141,151,21,249,151,157,83,115,105,148,107,255,239,180,56,188,109,153,199,51,150,12,43,254,185,186,145,55,215,157,219,4,127,98,11,196,94,83,172,193,122,134,7,98,9,169,24,2,69,249,120,52,88,72,36, +161,229,81,127,81,157,181,184,89,36,133,56,125,93,217,98,145,31,183,71,174,198,38,127,89,129,127,53,30,111,83,151,76,112,29,75,5,9,193,236,17,130,138,51,77,226,99,40,146,84,113,6,255,66,190,4,8,218,65,29,44,104,90,160,39,177,159,69,178,7,17,74,98,254,157,192,250,142,119,192,55,253,112,144,18,101,29,90,79,41,244,198,46,180,16,213,136,184,206,116,110,79,117,106,195,66,63,96,4,191,167,209,1,61,207,181,91,232,60,131,47,122,232,48,128,224,80,73,245,35,87,210,11,23,116,110,239,69,222,249,244,52,81,77,243,59,109,164,88,238,247,129,78,181,217,46,213,154,183,90,167,246,112,73,189,95,167,85,44,213,170,181,95,177,220,172,214,187,229,95,209,63,185,179,197,26,5,213,114,187,100,243,230,81,30,111,193,103,89,241,211,211,18,241,104,61,61,72,246,19,103,235,242,170,119,222,154,246,160,31,46,162,248,143,86,111,165,218,219,117,134,189,74,179,215,120,52,91,133,102,179,214,42,193,70,105,172,228,44,240,243,85,173,122,178,214, +107,214,26,181,194,120,171,31,202,79,227,176,127,79,235,215,45,58,224,213,188,191,55,253,171,236,73,23,2,91,53,166,95,167,191,240,51,213,173,209,108,91,231,197,138,183,132,7,148,101,102,165,154,91,44,233,133,132,91,167,57,34,158,191,30,126,192,192,37,40,210,135,41,227,218,15,50,166,51,168,42,231,206,149,106,66,83,130,206,49,41,55,57,253,76,254,121,158,143,75,93,107,255,124,172,253,252,19,78,234,58,184,254,113,26,114,19,171,151,135,183,192,171,193,253,221,135,254,48,169,12,23,133,132,244,109,38,97,227,65,158,244,225,75,145,27,16,66,130,139,116,136,10,108,50,229,69,122,115,251,97,110,180,97,232,133,118,107,184,108,146,198,49,49,176,227,0,114,241,55,79,253,236,160,12,116,143,97,46,170,211,253,73,58,22,97,76,89,254,73,127,227,71,22,127,12,90,228,144,189,83,231,7,196,78,73,155,227,5,121,213,141,196,190,125,192,189,110,220,62,71,148,62,25,188,100,172,176,136,51,10,65,26,158,171,7,74,48,199,64,12,224,251,23,213,157, +208,253,218,171,219,0,68,0,34,189,244,66,245,205,63,89,188,239,190,71,54,210,33,140,172,206,243,30,192,180,188,127,102,22,226,192,79,212,93,255,196,70,52,53,105,125,29,78,159,23,213,95,101,124,170,195,243,201,17,178,166,123,222,93,77,133,110,140,138,251,55,1,241,163,133,249,80,137,59,101,183,80,138,245,72,250,168,84,118,249,118,149,195,50,145,198,146,184,146,9,4,69,13,48,49,250,11,50,88,6,44,201,180,254,74,159,201,212,100,212,236,28,74,208,26,56,95,203,235,131,213,42,81,150,50,167,165,132,98,143,94,179,43,115,86,186,31,84,80,8,198,131,246,192,247,30,229,122,247,186,9,78,140,140,202,82,24,146,49,245,67,212,253,236,232,113,148,76,63,238,162,48,107,16,155,176,25,32,115,95,148,233,174,42,147,242,237,183,169,155,172,239,222,215,217,36,230,52,91,77,138,237,98,59,90,111,87,171,149,78,143,81,235,180,26,173,65,117,48,60,59,173,143,203,218,55,91,189,110,47,185,120,47,54,234,253,159,74,229,218,107,253,204,103,179,117, +106,206,101,175,248,156,185,148,199,89,176,121,43,174,101,93,199,157,29,39,206,138,243,60,219,186,107,90,4,78,71,119,203,172,226,87,228,251,247,231,168,196,95,159,203,44,145,169,37,6,155,91,98,139,247,123,129,182,76,179,94,107,57,106,99,237,108,175,218,108,20,106,181,254,214,171,99,163,32,149,246,86,222,111,125,209,169,252,52,23,182,186,76,192,103,80,138,253,212,79,108,203,206,248,153,196,5,64,148,81,120,180,79,249,177,152,231,221,205,239,38,142,107,14,223,185,234,185,236,176,176,179,114,82,254,48,173,215,235,105,174,112,119,60,115,46,204,134,224,185,210,29,58,183,143,28,185,219,173,159,16,159,187,186,221,46,219,12,143,55,227,88,175,239,164,200,173,132,164,247,183,180,130,130,2,220,34,141,250,168,5,80,127,207,99,87,116,236,6,86,104,60,211,99,154,67,181,89,194,76,5,202,45,183,218,40,140,235,77,55,24,206,223,93,22,144,27,107,89,15,12,92,35,144,119,184,58,119,94,153,27,118,180,9,207,131,54,118,64,95,22,225,210,15,28,225, +165,167,193,215,31,118,201,46,55,34,134,188,169,110,185,118,174,92,168,168,224,30,233,78,177,64,19,73,30,197,232,73,250,86,102,71,215,246,194,21,15,87,5,78,239,114,129,235,16,138,73,87,22,161,97,214,235,231,46,119,149,90,183,169,17,230,38,218,45,245,55,119,119,182,220,199,7,38,215,251,107,99,217,175,101,210,80,12,45,244,199,74,36,240,0,73,32,80,210,197,245,182,219,112,88,42,107,53,25,57,190,255,252,220,107,93,229,119,149,226,177,205,166,63,127,229,16,38,138,172,62,113,133,249,141,115,230,162,252,140,144,165,180,59,21,130,174,143,191,241,40,125,122,31,207,22,110,68,10,49,151,131,161,19,5,235,2,110,254,211,88,31,153,49,92,217,194,90,40,118,49,114,13,160,116,242,178,50,8,161,24,59,166,90,121,94,185,240,104,5,10,231,241,142,241,248,76,174,91,22,163,64,160,214,88,229,170,67,199,16,242,142,2,8,204,249,146,117,209,237,86,130,8,57,118,38,156,227,216,105,175,92,98,146,9,28,96,62,25,65,177,215,139,163,43,37, +167,107,34,18,19,161,127,247,47,223,25,192,202,175,72,171,22,59,189,220,119,177,120,113,73,197,206,175,85,238,53,251,221,242,167,75,4,42,10,235,182,228,149,133,123,191,227,194,118,100,182,43,68,103,219,238,109,87,111,8,135,214,187,1,2,42,53,139,146,179,198,100,175,45,56,25,166,135,157,110,47,50,238,49,59,125,214,85,225,248,143,91,226,23,121,44,166,175,66,163,50,104,76,133,107,163,88,111,214,53,134,125,201,86,183,214,233,149,53,245,27,94,68,246,9,2,186,32,72,135,98,130,104,74,0,144,254,4,253,55,237,125,179,233,111,62,129,94,173,12,152,78,105,103,221,54,214,114,150,115,101,139,59,107,183,88,135,52,127,21,21,15,131,145,239,125,189,174,190,35,185,72,253,133,220,210,95,91,55,250,164,51,32,182,225,190,26,241,125,188,61,155,239,230,179,118,108,191,198,231,103,201,89,56,12,1,65,137,191,219,130,169,92,225,70,40,151,10,63,72,73,205,65,170,80,23,142,53,2,158,29,134,206,89,208,97,114,91,105,176,126,149,224,39,222,152, +28,173,249,199,6,51,157,22,193,67,0,102,111,248,220,187,132,246,228,150,160,24,3,68,124,51,115,105,19,22,188,245,247,143,108,87,246,18,189,177,146,209,176,119,126,41,188,27,23,244,66,56,92,34,11,100,208,1,42,14,36,146,8,37,56,21,149,105,10,230,1,147,168,73,4,28,102,35,128,245,95,126,83,58,196,183,209,222,93,253,182,88,32,204,137,252,87,224,181,42,100,166,251,47,68,159,53,220,244,185,28,246,114,61,191,176,4,2,51,91,243,201,37,117,146,227,50,203,188,154,4,111,25,35,183,217,187,10,156,187,82,162,66,237,123,118,195,71,154,152,228,40,21,39,109,26,81,156,189,116,14,13,165,114,145,8,79,239,165,5,56,50,74,228,66,3,137,188,241,239,129,200,179,112,52,186,10,189,83,17,209,151,104,100,231,141,67,93,116,137,159,155,240,2,166,17,100,189,232,223,188,99,148,128,101,27,220,79,134,2,191,44,46,147,50,24,253,44,85,172,76,88,155,139,253,65,4,160,230,0,53,14,144,132,29,162,151,145,101,210,116,44,46,47,11,237, +32,246,182,89,212,64,140,243,140,8,189,255,90,198,201,22,209,8,163,101,95,97,69,208,154,214,224,217,252,243,249,33,20,36,10,97,200,147,40,60,124,70,205,54,114,168,8,58,54,11,250,178,74,72,47,251,96,60,138,85,243,138,215,51,237,0,222,29,185,109,215,235,242,148,16,155,198,4,232,76,128,70,21,210,68,12,117,58,45,220,92,148,58,237,66,171,115,174,215,139,138,195,193,222,225,120,190,238,227,227,247,228,69,160,113,82,184,63,156,146,78,59,212,20,145,38,183,207,221,53,19,124,77,199,2,191,222,227,83,168,45,178,14,2,20,1,222,169,229,218,4,69,242,121,57,154,219,222,2,252,81,130,73,21,80,252,29,133,10,22,80,146,24,14,54,123,53,140,44,1,190,33,228,71,100,190,149,119,213,84,169,154,154,166,151,35,49,58,28,109,38,158,87,153,160,71,243,62,17,50,247,236,221,142,149,164,219,72,42,154,168,174,126,235,146,226,112,157,117,190,182,205,131,155,80,110,178,177,112,236,238,99,100,135,252,100,70,5,237,173,14,142,157,129,137,93, +252,88,150,129,79,58,240,103,128,126,21,33,201,171,204,244,135,152,194,74,153,177,245,57,196,248,65,133,14,53,68,183,21,184,61,162,100,107,62,30,47,170,200,220,201,64,108,249,172,179,31,182,246,224,142,254,246,122,21,211,205,23,43,242,22,113,189,29,114,237,163,248,12,59,115,43,6,37,68,91,37,80,61,148,33,237,95,4,157,34,151,209,129,192,14,0,6,158,205,171,213,95,221,208,28,165,114,118,62,184,98,88,232,72,220,174,101,49,73,149,122,141,140,223,212,174,168,103,121,131,185,223,168,114,184,59,199,189,57,132,195,61,184,235,189,96,240,192,92,157,102,218,249,49,199,254,165,184,100,231,210,16,4,241,231,233,145,242,95,183,223,76,200,209,5,9,239,146,155,196,84,137,82,232,12,210,24,87,173,154,67,106,47,228,117,99,7,84,193,165,192,138,141,132,75,106,118,34,74,30,247,91,54,84,218,119,76,78,32,128,13,193,254,198,55,245,44,70,23,203,119,101,37,156,183,128,168,1,18,49,217,53,245,143,17,172,60,185,147,104,166,191,70,157,142,145, +0,6,224,123,27,46,90,63,188,194,31,183,174,53,218,195,46,75,21,168,142,233,164,219,252,171,208,27,192,234,251,34,36,90,243,135,202,109,126,16,213,245,245,172,193,165,157,66,87,202,171,8,211,138,62,186,42,168,227,27,250,42,58,57,244,139,54,103,117,65,88,28,138,70,114,127,65,224,25,49,160,152,120,21,167,207,99,197,6,85,66,46,229,49,132,236,20,82,130,252,54,94,203,183,190,251,10,248,216,69,196,175,77,179,199,108,51,144,29,23,155,205,81,175,130,106,180,175,90,165,82,207,116,26,189,70,169,82,126,212,6,181,74,171,215,124,85,177,160,72,214,44,114,74,173,229,74,56,198,159,120,16,223,191,101,157,249,183,254,183,252,117,117,144,110,14,128,7,63,239,247,54,129,43,102,66,141,150,104,171,143,4,118,34,189,211,53,177,84,160,200,220,89,150,59,239,255,214,186,234,3,223,82,232,243,241,205,88,82,186,213,167,51,205,70,216,237,235,206,52,129,38,13,36,241,2,13,10,143,69,54,210,52,226,182,79,11,124,159,182,69,217,67,63,124,10, +241,214,168,100,79,27,88,122,185,76,228,187,75,220,223,217,211,55,112,105,82,220,191,106,133,140,76,10,152,20,105,162,20,73,72,118,195,102,240,245,101,186,130,193,138,48,78,108,246,169,239,106,49,132,147,75,54,52,103,56,231,188,254,239,105,225,66,219,20,221,156,192,5,33,74,180,223,91,188,123,59,35,193,107,19,244,252,65,9,201,2,64,67,72,13,123,45,68,153,131,91,94,140,155,138,8,191,5,161,36,129,87,37,84,80,170,211,251,71,165,227,85,154,134,233,226,190,231,19,185,219,168,247,171,131,145,118,85,93,156,29,189,182,197,16,232,235,123,223,177,110,234,88,118,78,244,184,177,124,43,72,232,124,43,27,124,189,132,157,68,221,73,163,220,141,97,199,70,178,3,73,184,167,3,64,248,135,106,41,29,181,174,5,45,176,197,226,241,151,179,245,105,175,189,244,239,87,221,247,211,255,248,30,145,175,228,84,97,232,176,246,181,91,143,51,228,115,151,51,250,90,125,127,254,110,167,97,248,64,182,148,1,192,77,65,207,177,207,31,19,113,23,10,14,63,66, +59,59,193,246,5,51,0,94,228,196,197,40,233,57,200,240,20,202,237,182,187,140,210,214,16,134,215,31,191,167,207,168,36,128,201,93,76,250,57,129,9,82,170,80,60,40,49,247,3,82,255,221,137,54,65,224,24,233,88,130,152,193,131,125,87,93,140,232,226,84,234,224,65,126,251,37,119,240,6,198,35,199,187,218,221,32,29,142,106,108,12,88,19,235,44,219,71,26,208,42,219,64,54,66,163,245,48,170,238,48,137,211,27,35,48,211,12,160,96,100,189,119,36,150,208,248,10,95,130,105,7,123,211,212,129,165,254,59,138,184,101,246,44,137,252,171,24,121,0,37,238,190,145,167,53,147,231,248,152,119,27,30,120,163,95,108,117,187,125,98,175,86,5,155,34,123,224,126,159,199,254,238,103,96,125,94,71,186,145,227,160,92,70,192,241,107,95,160,235,30,130,242,34,255,137,183,23,253,9,53,170,107,191,81,156,42,183,85,79,253,114,170,252,227,13,240,213,81,5,179,133,151,142,209,202,152,255,179,100,36,39,221,90,250,29,85,34,227,31,159,84,171,180,125,181,66, +253,247,203,94,177,215,231,238,5,246,17,124,116,57,151,223,133,170,15,217,137,156,118,174,48,176,67,69,16,139,159,17,148,104,30,29,75,48,240,125,4,129,136,15,99,207,55,254,67,120,44,196,161,192,228,48,215,79,104,36,195,184,22,86,30,11,100,195,65,192,255,59,180,14,223,136,78,205,88,100,250,238,104,23,68,191,18,152,165,80,158,255,254,20,74,137,97,224,208,41,242,135,226,146,42,140,106,31,170,163,85,237,127,19,102,113,94,93,227,191,41,79,205,244,138,15,77,160,103,209,29,139,103,107,187,208,111,3,47,161,211,75,187,193,2,41,218,2,196,17,220,243,135,250,107,31,128,229,97,120,89,41,23,206,26,7,19,94,123,149,81,231,122,204,148,57,44,230,227,212,137,193,30,165,176,34,203,39,19,135,71,30,160,105,115,38,129,210,19,128,136,11,201,50,54,118,10,76,115,207,53,12,110,4,3,229,37,188,179,65,48,120,61,140,211,66,145,31,174,103,133,54,172,121,148,188,118,139,195,231,153,202,211,122,125,166,217,100,150,45,128,151,5,94,207,194, +123,26,56,217,222,252,239,74,203,222,168,75,245,5,189,254,122,44,255,12,160,175,221,234,222,236,101,54,103,117,174,198,45,105,129,127,144,50,206,36,184,97,191,50,173,229,201,128,32,158,56,91,169,155,114,240,122,59,86,69,152,253,248,153,163,49,19,168,47,161,221,189,219,220,19,99,138,4,4,91,252,213,87,108,250,8,39,139,142,22,171,106,201,233,72,180,167,82,87,191,64,59,237,188,165,53,171,125,139,231,42,126,173,211,65,254,225,209,130,61,200,58,21,166,239,210,23,201,109,83,35,9,16,219,113,50,12,138,198,85,69,81,248,143,236,100,21,183,7,32,96,224,179,21,227,97,229,165,5,131,180,162,188,89,128,146,75,69,119,189,51,19,142,146,200,243,199,151,163,136,104,228,162,156,104,48,128,58,4,172,99,212,178,153,61,6,235,229,118,246,114,139,2,42,155,212,169,253,61,162,89,81,188,44,246,71,43,203,104,85,90,213,86,245,156,113,184,156,78,183,230,187,121,122,143,135,18,110,151,73,162,241,239,172,254,215,24,36,118,130,162,136,165,175,247,187, +221,222,208,184,210,89,172,180,25,231,149,57,225,98,110,120,193,203,195,197,214,231,216,250,123,142,1,240,73,75,220,150,47,10,255,41,91,57,211,171,83,3,154,251,253,148,137,53,19,110,246,151,60,145,167,107,244,197,119,2,79,199,91,230,71,56,45,141,156,231,164,34,26,36,134,15,194,185,185,112,159,107,166,108,81,82,144,24,165,190,197,65,111,207,240,57,215,15,132,109,102,129,9,88,171,175,5,246,31,203,44,22,77,94,125,107,210,229,5,252,77,47,10,246,119,238,46,201,119,248,24,114,220,221,211,24,126,126,173,217,50,85,52,247,205,48,132,84,196,223,183,155,179,169,46,74,204,12,112,140,233,214,180,33,54,4,161,36,39,101,206,32,211,7,234,201,125,132,253,191,23,154,120,215,160,114,51,43,185,28,171,90,23,121,153,168,200,140,103,41,64,108,28,220,238,23,93,112,166,13,193,82,232,212,190,7,76,130,27,23,159,87,78,249,141,252,77,59,160,122,105,157,42,223,225,148,239,146,255,144,238,227,217,242,7,223,192,111,53,82,95,229,32,214,27,176, +115,137,29,70,58,143,3,150,205,122,194,56,6,4,49,227,201,239,118,128,137,201,62,51,71,140,4,100,50,23,229,84,75,113,199,184,254,35,132,35,231,210,193,44,57,227,102,217,242,54,122,151,170,199,86,175,82,221,78,14,111,225,123,191,30,174,95,250,92,117,51,22,127,204,169,110,213,215,111,59,26,214,214,70,169,217,40,85,16,22,179,251,99,201,104,90,121,24,94,233,36,146,194,163,24,136,172,203,210,202,74,208,68,166,44,65,66,2,54,14,86,186,252,116,254,65,202,200,8,191,180,115,65,153,239,161,42,66,85,132,51,147,173,250,64,84,80,64,45,140,54,71,33,97,40,75,148,171,13,86,115,21,113,149,29,142,18,41,216,55,39,139,140,186,134,81,248,175,36,161,112,219,124,137,147,160,193,64,200,4,139,18,69,36,117,20,170,220,82,107,37,48,6,239,166,30,155,202,171,216,26,52,159,32,102,36,97,223,157,70,16,173,61,220,196,72,160,215,169,103,204,29,252,3,67,171,72,9,51,100,213,130,108,127,185,22,9,217,44,220,32,152,229,196,31,42, +125,31,143,9,185,32,19,66,126,10,127,68,63,192,139,46,150,255,181,185,91,227,86,11,7,247,253,136,66,125,167,117,192,100,21,173,16,30,252,193,126,184,155,75,0,7,159,252,0,222,240,243,61,165,179,11,166,175,224,185,13,117,146,5,243,250,217,51,92,182,127,124,19,138,133,142,101,63,88,123,54,155,197,154,127,101,25,186,214,104,243,172,166,147,45,235,157,127,14,106,6,11,166,66,238,254,250,124,219,216,173,128,170,182,105,223,93,210,124,174,100,171,147,173,174,243,219,49,207,121,214,120,92,221,211,65,211,88,213,76,2,34,91,141,63,196,7,76,34,167,112,172,7,93,26,62,169,168,146,157,37,156,88,52,142,107,173,89,136,59,11,250,33,116,243,44,58,135,44,67,64,124,23,2,132,32,161,117,33,25,164,99,243,138,93,18,15,102,22,148,203,72,58,65,54,153,233,141,46,223,193,243,182,61,26,186,96,112,8,252,194,104,173,254,93,219,81,116,177,69,165,83,4,142,49,252,234,71,229,46,160,191,159,103,127,235,53,130,8,40,40,118,22,15,129,214, +25,56,4,83,8,88,134,219,26,243,145,245,153,252,89,79,255,241,77,158,15,227,199,7,99,116,101,39,136,180,240,206,5,25,53,211,197,144,103,148,125,193,235,191,97,246,7,186,147,57,3,124,28,242,52,68,212,142,48,60,253,170,140,163,189,247,206,20,108,75,77,105,23,108,236,1,229,57,187,71,28,147,49,120,126,11,202,149,15,151,167,7,225,65,108,26,3,228,152,153,66,54,176,98,250,70,229,7,109,10,13,135,239,227,33,150,202,19,23,204,224,16,36,85,14,81,115,224,201,244,45,101,0,227,98,195,187,2,102,78,102,191,205,18,113,187,76,62,43,63,169,145,247,70,199,192,236,10,102,7,57,21,54,141,242,52,149,232,22,214,5,4,93,36,75,78,161,29,47,72,199,89,214,70,198,21,10,186,181,182,235,3,202,253,192,9,245,169,241,164,229,165,218,19,136,191,63,190,254,96,98,183,140,137,143,43,134,48,248,50,52,183,132,64,130,242,78,255,25,238,165,38,184,83,96,119,55,140,98,173,83,127,112,228,73,114,143,134,69,189,24,145,190,233,246,118, +249,71,96,16,181,231,130,19,184,6,249,216,91,12,192,13,174,111,117,230,80,4,116,25,13,198,141,190,182,191,179,22,244,97,7,168,24,226,125,221,195,98,168,22,6,58,201,31,65,222,135,179,64,131,40,252,22,71,240,77,97,94,246,7,161,131,208,115,136,48,140,8,174,202,229,179,255,125,40,1,173,58,248,110,242,52,193,192,248,123,176,75,159,203,113,246,90,105,31,126,122,182,161,195,147,102,30,97,144,200,252,83,155,154,220,224,117,7,147,132,73,59,49,41,247,155,24,185,62,13,61,39,93,144,189,93,82,15,207,116,140,191,168,65,72,65,77,62,114,64,140,138,157,108,12,134,66,156,95,104,94,56,41,102,78,105,83,75,170,255,73,69,23,174,134,74,66,92,82,201,182,176,68,76,207,84,14,168,56,91,85,94,82,153,189,28,146,105,147,18,67,17,81,42,180,146,249,224,230,112,73,105,145,40,192,48,104,39,148,88,88,157,113,8,76,85,165,214,214,150,217,193,11,181,79,34,8,201,151,127,23,85,54,63,149,231,223,190,119,183,239,118,168,23,248,223, +230,76,227,79,22,66,193,157,110,98,5,76,213,172,210,25,78,2,152,40,58,240,129,69,71,166,16,223,189,199,182,103,201,191,209,11,6,125,192,237,137,102,224,222,225,74,253,167,142,252,139,114,68,19,242,146,196,34,200,155,144,129,117,53,156,163,6,182,44,114,235,121,169,140,3,238,119,79,99,236,81,18,197,138,81,97,159,153,98,48,158,69,50,50,154,153,155,224,185,148,29,209,223,103,28,251,251,164,207,228,191,40,118,130,192,107,55,169,252,60,73,98,2,18,253,233,115,17,116,86,251,31,151,58,192,55,137,75,230,68,231,54,120,5,17,198,181,35,158,6,36,138,81,201,200,190,5,89,56,88,156,15,229,198,217,174,28,158,113,235,172,125,90,221,150,151,203,139,114,88,130,212,178,31,28,204,163,76,244,93,18,110,44,51,121,151,14,225,161,42,173,157,113,117,46,21,25,126,186,141,144,152,53,77,66,19,197,168,39,116,100,246,58,221,158,63,188,57,14,130,50,175,73,153,11,219,117,110,245,7,207,157,205,162,41,222,20,9,52,89,116,233,106,208,133,90, +189,75,58,111,255,141,253,230,126,61,45,139,146,28,27,223,122,69,231,220,233,204,176,131,224,18,76,37,142,103,192,126,89,248,185,239,11,27,139,230,123,22,232,47,151,143,19,126,230,12,118,76,163,55,30,207,161,102,210,2,43,8,26,220,97,103,32,48,155,112,36,4,130,254,67,199,218,163,160,25,65,165,187,243,76,195,27,32,118,20,99,18,130,248,97,218,173,8,53,24,129,156,80,78,166,5,6,243,3,231,96,148,1,108,230,59,110,65,136,227,182,148,42,240,2,220,154,218,37,175,103,24,29,151,131,100,44,74,198,58,35,243,200,141,173,111,199,80,144,116,71,201,81,22,167,219,75,148,180,222,89,217,95,75,74,20,162,84,102,197,151,50,224,100,48,15,167,132,110,31,24,176,14,108,239,196,198,83,86,26,123,24,139,82,182,62,84,114,210,146,42,110,211,172,245,86,93,183,248,110,22,159,185,66,47,248,124,22,243,135,203,160,184,180,59,117,201,124,73,99,160,31,82,49,169,35,14,214,210,36,21,213,204,19,166,55,69,205,94,135,86,162,170,190,153,77, +75,209,129,88,80,64,104,5,138,196,5,128,212,132,198,145,184,141,164,241,83,247,182,44,78,118,101,200,13,79,252,53,227,128,197,203,219,227,209,16,8,188,211,88,59,125,2,115,75,68,197,134,240,98,124,235,111,39,105,132,78,85,210,215,159,122,72,84,222,126,99,118,19,248,40,97,106,165,82,57,105,223,127,229,213,17,181,253,249,247,152,121,57,154,190,211,119,189,6,62,7,223,203,233,255,142,242,79,231,30,112,198,105,63,200,164,121,234,241,57,32,230,119,41,76,42,35,91,64,16,116,249,134,199,19,11,5,68,232,1,93,29,106,94,137,156,74,191,26,120,24,80,64,94,147,130,241,135,213,33,199,129,32,99,32,25,153,123,121,107,145,0,133,132,86,3,146,191,63,91,238,220,30,54,152,204,249,36,113,96,81,15,180,237,85,38,118,213,5,158,128,155,85,73,184,121,4,151,240,74,203,243,95,35,201,58,4,193,90,137,51,88,202,63,214,225,198,79,36,171,88,151,213,251,114,148,217,89,92,59,235,156,236,82,155,224,117,121,3,139,244,187,178,90,226,53, +226,197,46,227,116,44,184,163,182,165,26,112,181,157,112,200,243,178,212,95,53,171,86,46,248,208,19,189,104,183,18,39,40,249,71,90,91,62,14,162,27,212,62,144,103,138,24,95,48,77,56,218,137,83,88,191,17,66,99,202,125,94,81,204,227,94,220,190,138,180,234,45,84,65,188,164,234,102,133,36,248,213,198,13,68,24,1,233,44,24,224,52,232,185,230,5,163,78,205,122,85,228,173,25,56,135,129,69,111,156,127,153,37,77,251,179,56,39,153,85,70,107,167,68,116,143,12,135,205,164,149,217,255,56,56,221,70,216,167,150,12,167,217,73,58,141,84,24,16,60,51,195,71,63,20,52,220,59,203,221,222,0,233,36,152,136,43,187,201,75,101,243,96,120,194,21,113,72,213,173,246,17,250,190,23,70,96,91,187,106,13,141,32,226,44,57,105,70,19,203,222,210,250,79,187,219,62,219,45,194,72,225,251,20,76,2,111,193,247,244,62,57,143,133,58,67,169,72,60,43,109,205,102,73,59,149,207,41,64,18,21,195,244,81,45,29,36,32,177,146,149,67,71,242,47,7, +15,229,34,33,192,214,130,145,101,57,154,111,6,41,176,96,112,88,92,247,152,70,185,228,138,139,116,203,39,136,17,231,56,86,60,175,109,24,231,181,30,146,172,161,200,241,168,65,244,222,144,165,19,250,80,153,233,254,152,162,134,192,213,196,253,91,143,245,53,230,92,88,16,248,214,146,5,186,206,248,53,11,34,83,196,243,23,6,11,49,33,237,193,192,206,247,110,201,125,155,194,23,147,72,36,218,122,134,160,126,237,215,93,96,208,175,177,63,225,185,178,171,233,207,147,213,180,143,179,72,147,220,2,189,89,106,171,61,22,87,133,130,179,192,27,248,211,156,223,112,186,186,177,184,98,74,3,163,49,20,178,210,132,16,244,107,77,25,100,17,13,105,103,102,188,81,58,116,162,144,169,26,188,7,79,124,102,165,76,8,223,159,169,6,3,127,121,104,48,137,143,63,20,237,27,185,163,167,223,112,7,180,58,30,125,98,207,207,16,113,133,175,135,232,191,198,152,39,47,27,213,11,79,102,42,206,9,158,157,162,245,232,18,127,207,122,69,8,210,129,104,81,89,57,220,58, +83,86,79,92,192,158,114,42,136,164,36,36,111,14,123,197,141,218,179,93,119,56,98,111,25,104,118,101,214,254,157,104,184,181,243,152,50,0,159,44,1,12,143,115,174,160,201,101,254,81,178,21,95,202,165,44,215,41,2,58,72,182,33,229,166,21,6,94,109,75,125,93,48,123,28,82,16,191,253,197,115,212,45,211,94,127,227,106,188,95,220,74,42,172,91,253,204,144,81,156,173,107,127,141,32,32,81,43,67,131,40,101,31,221,49,73,109,5,196,139,135,26,243,163,32,13,223,249,158,145,170,197,29,105,90,11,216,22,228,112,226,207,21,59,139,159,161,229,231,221,158,198,51,169,243,253,56,152,157,38,123,28,8,90,157,172,34,46,0,138,226,108,153,59,107,65,128,140,135,197,172,211,106,102,68,1,94,36,128,156,202,87,25,244,115,247,27,154,173,166,208,31,172,42,201,235,76,133,100,245,159,152,165,252,58,12,30,205,116,42,72,130,24,159,207,63,1,217,190,8,2,207,63,177,114,172,55,240,211,12,118,250,29,0,34,34,132,138,140,218,204,168,158,200,166,206, +252,66,227,33,35,184,28,84,130,132,217,56,79,152,128,240,162,66,137,81,18,107,206,128,33,242,148,150,69,129,240,176,248,156,171,223,241,173,32,137,168,123,21,8,130,189,126,168,199,25,213,56,164,76,6,171,91,198,131,133,233,204,127,117,185,194,247,247,121,8,248,50,200,130,46,207,209,127,95,240,201,80,228,220,31,190,144,172,145,86,130,174,68,145,239,62,5,126,33,113,129,207,103,94,119,92,228,137,237,57,19,192,178,124,18,254,170,179,141,255,42,9,29,67,64,159,217,6,54,44,149,101,189,203,67,3,185,9,192,161,143,178,84,209,174,60,174,215,74,94,230,160,3,240,215,210,198,11,251,147,11,9,105,215,222,123,8,39,132,129,235,93,101,28,96,167,0,39,8,73,255,62,70,139,94,72,161,252,45,160,121,199,112,84,220,240,169,244,29,171,225,210,19,189,103,39,140,214,246,209,244,82,117,6,225,96,241,44,17,101,12,135,98,225,99,36,99,74,115,37,167,147,15,193,59,222,244,61,201,105,105,41,4,165,132,37,214,10,238,68,203,126,26,19,96,59, +145,115,40,180,247,74,10,19,253,3,68,64,7,103,116,91,40,39,174,211,178,101,126,189,62,70,217,212,231,162,134,61,110,145,92,37,84,14,86,6,115,93,0,43,75,33,201,221,219,92,85,135,205,222,141,176,224,142,142,100,149,218,15,203,14,248,138,76,42,193,139,90,69,108,201,220,114,1,193,152,177,179,230,206,194,220,126,251,202,119,20,43,176,115,224,97,86,113,236,252,163,143,251,186,136,250,136,63,176,86,195,138,76,86,211,138,170,79,199,30,59,56,88,216,204,120,199,204,10,57,94,93,120,16,34,145,228,249,28,44,111,0,141,89,217,236,71,45,129,37,207,118,62,183,211,206,35,204,78,40,214,169,248,34,18,185,113,159,221,60,49,106,10,47,77,128,174,206,25,225,211,63,103,191,245,215,241,176,154,141,212,69,74,64,64,136,68,40,41,242,3,50,254,72,243,156,104,174,230,193,57,73,124,232,206,201,76,199,225,199,237,158,36,106,20,107,132,34,16,146,4,131,0,84,198,171,112,76,50,81,57,51,163,254,192,162,210,121,96,61,255,204,167,250,239,215, +184,248,168,52,10,205,211,99,64,20,69,4,209,12,66,64,210,162,90,218,46,133,69,171,228,100,10,148,13,139,32,179,184,15,147,6,133,222,20,78,101,168,147,15,198,133,193,217,69,197,163,3,64,81,121,206,185,105,57,195,129,172,104,81,19,102,246,213,80,199,73,175,14,186,62,127,41,100,108,240,186,240,57,168,79,172,16,73,67,188,65,251,10,84,202,161,172,120,64,233,222,31,77,34,73,249,133,46,190,178,74,126,27,248,114,142,220,15,124,80,220,129,63,4,181,222,123,119,127,84,21,10,214,202,16,221,174,254,67,255,255,108,16,14,32,141,20,232,160,158,93,27,111,44,18,40,169,192,56,221,9,156,175,132,152,97,63,214,160,190,15,130,76,31,160,23,154,139,40,236,222,87,165,142,3,160,98,44,181,5,230,129,88,218,62,86,147,16,252,219,204,188,31,56,90,51,68,70,96,189,190,125,24,239,254,179,252,107,184,128,14,253,182,77,150,211,0,43,184,91,210,199,210,250,77,57,158,38,159,241,224,20,188,200,44,86,86,230,111,52,50,253,138,217,25,233, +98,176,125,87,110,253,68,193,218,33,192,184,33,2,171,25,230,104,173,38,18,253,18,135,216,13,188,43,170,8,87,200,8,77,28,154,196,17,205,229,116,68,255,173,137,124,72,66,31,96,52,221,110,143,203,17,214,95,112,8,61,227,17,93,40,38,163,181,204,203,36,103,249,23,144,66,110,159,36,219,83,159,179,192,253,162,252,86,254,62,145,98,119,194,39,134,33,238,217,154,79,225,182,77,237,162,254,230,112,37,214,2,253,178,150,126,178,193,193,159,184,71,173,227,89,220,131,103,132,40,74,180,44,240,30,203,34,167,83,250,64,73,99,96,120,165,220,150,208,169,74,9,60,45,234,201,136,29,84,65,200,255,71,195,89,245,56,175,108,221,250,175,59,204,204,204,204,29,102,230,164,195,204,208,97,102,206,121,215,254,116,36,203,87,190,168,210,132,241,12,213,44,55,232,164,30,212,74,251,123,216,101,244,232,227,88,80,254,237,215,79,98,157,83,152,103,244,68,100,61,187,235,251,229,40,44,56,20,152,83,214,193,70,70,79,239,231,25,9,232,1,98,48,145,130,179, +124,213,110,34,158,132,129,128,167,90,16,84,182,138,224,71,143,10,89,208,214,182,154,177,70,69,58,222,206,119,246,5,63,84,154,231,116,35,224,235,249,190,77,151,36,145,66,18,104,41,184,168,64,70,1,60,91,197,108,229,65,229,116,246,33,75,64,74,45,28,155,130,189,149,150,115,73,23,220,22,34,20,89,32,86,23,82,37,198,4,18,194,119,96,73,212,0,2,239,32,173,82,118,61,202,61,23,21,144,79,61,163,213,96,57,220,110,167,79,87,93,38,176,212,62,54,230,184,138,40,50,88,77,29,58,13,66,115,220,249,61,8,143,41,137,215,44,42,223,17,160,60,251,63,99,49,78,131,251,74,24,182,194,150,188,142,203,199,162,180,141,5,8,2,231,123,62,247,73,106,105,194,242,105,168,14,190,57,121,141,225,98,197,242,144,51,88,111,21,14,156,180,29,238,6,10,129,140,5,14,24,90,34,77,89,171,72,0,3,84,48,164,23,31,64,25,5,250,220,224,126,212,212,146,104,24,167,47,52,140,248,140,126,17,140,192,221,122,114,131,255,93,120,189,131,56, +84,240,135,206,219,37,134,250,165,0,160,66,159,58,102,206,121,73,199,191,118,28,110,180,108,223,40,220,52,197,200,89,73,113,165,9,75,200,179,61,95,98,62,72,71,43,13,126,78,25,26,129,29,246,109,155,203,192,90,238,69,65,202,13,221,205,133,6,184,131,51,19,7,237,174,111,121,141,210,91,132,107,238,111,249,187,138,195,9,151,151,4,102,4,137,43,54,138,10,34,62,221,89,56,95,204,22,158,57,249,123,159,218,210,159,191,107,143,194,209,254,41,25,245,26,254,221,26,231,55,118,56,216,111,120,141,185,110,200,125,146,240,155,146,82,183,28,112,154,231,94,239,149,179,153,27,62,12,209,145,109,23,75,12,1,67,179,101,55,214,49,50,247,192,142,96,254,166,57,136,176,64,100,73,77,34,145,159,83,21,154,122,248,48,98,146,14,128,218,247,65,188,208,135,42,61,23,48,19,188,233,32,34,231,22,220,97,105,186,188,110,159,184,249,199,228,254,241,209,28,137,241,203,39,140,142,109,163,121,0,18,74,129,152,98,62,119,70,192,19,168,49,184,217,215,15, +142,55,18,57,84,0,5,118,224,230,217,86,12,115,202,63,49,107,72,70,75,69,242,195,194,181,119,205,117,148,1,175,255,10,156,193,120,215,233,132,122,130,120,138,72,95,19,56,208,241,100,178,55,19,82,255,93,48,146,84,110,57,188,120,170,253,96,71,30,138,145,108,85,180,165,0,133,200,97,92,139,113,135,116,195,246,93,105,62,11,37,193,13,204,60,235,196,198,116,37,127,17,75,1,65,195,204,221,19,132,184,149,54,167,21,241,120,52,133,131,129,182,34,158,26,140,50,233,254,169,126,242,132,154,38,108,199,75,158,195,222,235,118,24,206,19,234,129,152,228,56,176,221,136,242,242,179,195,22,51,160,175,207,86,122,86,77,124,176,6,43,22,242,153,25,203,126,167,13,252,105,139,100,125,98,123,210,242,47,126,246,190,25,165,238,26,180,36,56,239,182,193,20,6,223,160,7,243,146,172,246,133,176,48,170,48,231,76,1,112,48,135,210,219,177,79,186,172,94,254,253,161,25,6,33,156,48,61,213,37,22,32,144,15,205,215,233,122,31,4,72,23,64,138,118,51, +19,207,193,82,108,165,135,87,58,123,60,218,97,198,172,124,81,124,81,119,29,86,171,151,30,139,16,157,141,63,203,78,248,235,39,192,200,202,240,11,10,51,25,127,154,14,51,97,136,41,120,34,26,39,194,133,4,162,15,109,161,210,2,37,147,150,246,129,108,116,21,180,255,201,155,39,105,16,179,180,40,241,44,121,10,62,47,226,235,43,237,152,143,117,95,125,118,198,134,147,101,244,118,159,245,246,138,42,134,156,44,36,143,18,221,247,122,219,50,244,19,148,163,211,225,31,161,173,33,171,217,186,19,8,168,16,10,34,64,209,224,243,95,11,19,196,237,184,225,124,7,229,204,119,167,76,33,8,80,145,191,33,166,61,160,5,11,55,46,144,8,187,139,244,80,63,93,55,51,136,97,252,179,158,212,16,29,71,117,157,110,58,147,213,207,220,138,65,40,26,228,55,176,18,76,24,53,251,234,16,150,20,102,161,229,123,223,154,217,1,227,126,11,204,182,4,236,52,228,132,176,254,37,31,82,198,24,40,66,250,246,210,234,168,163,250,23,205,73,125,135,21,197,148,51,42, +42,244,138,233,184,142,55,0,127,119,136,120,114,2,1,66,181,181,5,33,200,149,156,141,201,146,208,176,96,83,189,168,182,121,32,14,1,79,44,183,83,167,106,32,116,38,150,38,119,2,161,148,34,46,64,152,137,66,33,30,99,193,198,174,89,136,14,86,188,79,208,203,33,85,109,173,97,250,57,71,130,120,40,215,252,125,15,178,50,214,72,194,9,135,58,56,1,235,74,84,16,253,81,188,64,20,64,228,34,189,239,8,122,166,139,56,182,87,160,53,253,206,0,100,148,238,212,18,33,173,0,212,26,107,190,222,138,239,8,103,147,250,165,181,22,179,162,142,254,60,214,99,132,225,115,143,251,255,231,228,222,223,33,219,179,199,117,178,80,93,135,73,61,201,95,79,78,169,117,36,47,179,235,123,202,250,158,184,72,22,80,160,93,241,153,12,127,154,140,167,63,49,98,238,151,96,125,142,144,147,34,224,45,21,255,14,182,73,250,190,12,172,208,73,62,119,187,188,30,195,46,37,8,69,50,235,195,124,155,203,202,187,84,188,68,6,30,154,4,101,150,15,194,0,47,3, +157,27,67,77,136,47,39,166,103,100,114,137,115,37,101,224,123,167,120,59,41,180,174,234,242,183,45,51,21,130,149,190,165,120,145,137,118,106,38,160,177,142,42,37,4,120,236,20,24,32,54,33,183,190,80,104,86,50,151,201,63,55,66,135,139,135,118,134,2,203,254,220,113,91,187,46,3,197,33,4,190,38,102,242,13,242,162,201,124,152,69,167,32,161,6,65,251,181,98,208,140,127,198,153,227,198,238,223,86,200,234,113,221,243,9,247,220,230,105,86,66,77,13,135,227,115,72,145,40,29,25,227,153,161,109,34,69,171,224,27,214,179,252,5,127,192,75,66,104,70,237,4,118,212,62,219,190,127,127,11,173,188,136,247,194,7,96,79,69,103,68,192,56,163,149,211,68,136,103,98,29,220,174,121,237,252,3,5,135,84,148,205,217,18,10,185,65,192,30,225,19,78,211,112,216,9,37,130,161,75,225,34,43,184,205,137,152,93,29,91,167,183,211,179,178,11,86,14,137,232,201,167,116,8,240,247,189,154,160,108,47,81,149,113,233,156,6,81,93,73,60,105,10,85,134,203, +72,139,113,49,35,202,203,42,69,134,60,85,215,224,36,193,227,33,230,253,37,93,79,136,247,192,223,234,45,15,238,117,85,193,99,29,242,204,112,198,65,215,81,75,139,31,200,131,196,82,98,162,76,148,132,89,39,203,33,205,73,121,132,88,69,108,51,65,170,14,183,211,229,120,252,245,107,72,95,117,223,241,180,122,141,100,194,158,56,243,221,175,60,35,106,124,202,152,113,44,2,79,129,223,40,9,81,68,13,28,207,207,119,216,166,144,125,88,186,101,153,120,18,103,21,23,62,235,7,70,195,100,140,21,31,113,126,189,63,59,61,227,170,115,210,89,148,153,91,119,75,99,182,240,52,220,159,252,146,230,36,34,28,127,105,58,11,11,12,25,178,5,160,252,83,157,227,205,49,126,58,202,73,28,172,97,182,245,244,243,106,9,50,131,47,192,168,155,16,75,49,251,79,249,142,83,22,112,64,199,222,190,66,182,228,28,249,114,105,42,240,152,130,148,165,35,106,63,227,115,194,221,41,204,28,145,199,176,244,201,96,47,77,66,227,153,53,149,247,242,126,15,10,231,118,164, +102,82,213,101,104,81,15,45,239,4,223,151,114,102,146,234,8,27,206,28,154,134,240,204,186,8,233,160,190,23,125,86,118,58,121,26,70,203,208,108,86,95,173,124,184,141,213,200,255,90,244,150,183,246,130,207,157,165,117,119,10,95,27,143,164,148,157,52,223,128,88,251,120,12,114,99,11,241,77,37,8,196,10,14,196,225,27,120,44,204,137,219,34,145,13,218,244,37,130,238,8,233,101,226,167,209,250,56,31,188,69,20,103,56,0,247,136,71,45,30,228,76,54,186,62,240,246,30,106,29,217,233,35,45,5,59,208,37,186,244,158,141,154,199,205,102,117,255,182,56,23,24,102,39,71,22,68,133,121,86,82,8,18,132,253,41,200,53,92,148,111,124,125,182,77,74,3,136,131,194,225,2,1,236,32,96,169,45,177,55,157,11,31,154,131,215,231,29,76,215,84,148,213,178,195,222,153,64,239,2,37,208,24,4,61,9,31,209,128,194,73,196,72,83,38,40,31,8,41,137,44,203,1,164,8,146,76,115,132,231,61,30,71,108,220,51,110,165,120,53,140,254,49,36,9,0, +31,40,103,23,236,64,221,89,105,56,211,240,232,228,28,150,141,169,204,152,179,44,145,0,196,87,47,116,184,26,124,29,1,53,183,172,244,173,58,241,197,175,87,219,209,126,237,253,197,115,72,108,175,107,58,11,153,10,113,19,63,66,210,125,168,254,190,249,152,127,33,10,72,163,18,220,246,62,52,253,197,102,189,228,137,216,252,194,248,15,108,103,222,138,243,253,55,126,220,255,213,10,108,254,195,42,40,48,213,64,238,137,141,92,6,14,141,211,246,48,236,128,217,140,99,14,68,88,134,252,29,108,221,253,51,28,70,43,51,95,41,187,35,167,223,89,127,101,171,27,7,103,140,29,97,88,57,21,230,90,193,135,102,127,204,182,84,106,68,105,25,65,179,248,65,111,186,223,232,248,137,156,37,71,208,205,217,248,242,24,31,145,2,8,83,48,35,164,217,224,109,6,51,39,191,22,217,24,48,158,195,236,55,157,248,40,135,153,176,164,88,32,246,60,75,45,149,224,23,168,206,24,44,74,36,235,66,158,196,198,137,170,78,54,106,157,175,91,205,126,95,215,231,189,191,12, +223,254,55,68,178,215,67,97,66,133,254,57,184,91,69,76,234,202,189,25,130,56,255,220,255,125,250,157,228,171,200,96,165,222,242,169,124,126,66,253,231,56,160,47,84,245,105,172,62,65,75,88,84,151,70,14,94,64,94,36,188,101,184,159,122,86,251,211,44,254,53,192,232,141,61,74,127,37,226,67,241,225,81,136,14,209,106,71,11,231,38,74,152,183,140,241,8,217,64,181,148,132,193,41,135,122,54,170,27,84,54,212,180,102,221,22,19,60,141,187,137,34,148,94,189,199,104,246,212,192,249,124,53,154,148,87,151,207,204,68,201,219,94,190,63,60,1,3,36,33,145,157,192,66,127,188,36,75,41,82,153,238,97,49,113,119,229,66,2,50,82,250,9,39,235,51,217,8,251,92,252,184,7,17,224,130,4,129,67,6,122,89,37,61,244,37,9,228,83,38,14,192,186,222,252,123,40,135,23,52,100,8,42,162,244,232,68,101,240,143,59,72,18,86,88,38,196,64,26,200,197,120,88,13,4,180,31,11,57,251,61,226,253,33,148,96,82,32,232,38,10,87,19,82,106,97, +107,0,254,17,72,156,181,172,193,191,80,13,10,164,104,255,46,32,80,155,120,96,197,69,121,61,12,5,226,110,113,24,95,88,171,24,86,28,70,132,101,103,52,253,213,123,52,223,34,201,54,137,110,159,135,117,207,53,141,29,49,166,170,15,1,255,108,79,211,239,177,164,89,241,254,74,12,159,34,167,73,146,94,35,78,112,3,245,127,15,255,195,150,247,152,97,238,192,181,223,17,147,108,129,57,233,190,149,212,206,247,233,114,241,193,250,39,175,187,46,5,1,234,1,78,231,215,70,184,190,111,219,103,209,29,102,188,156,105,69,254,68,183,50,209,26,146,234,21,236,97,225,5,217,30,65,245,247,60,205,3,141,223,91,75,148,83,102,176,3,203,31,83,40,225,228,241,111,179,31,147,133,201,78,194,120,207,145,141,88,234,75,150,99,75,80,93,67,141,183,98,254,70,240,121,196,195,223,143,223,219,241,99,184,143,167,84,249,73,232,68,20,102,25,157,145,128,49,120,63,202,170,53,178,92,131,7,66,4,250,139,182,33,193,90,245,21,49,241,119,71,232,195,99,218,223, +137,241,139,173,224,103,62,45,59,131,255,251,73,51,5,95,35,19,24,32,59,19,229,220,255,225,224,210,97,8,200,125,93,130,191,76,193,59,193,185,217,128,86,159,163,98,198,94,55,129,16,127,111,148,214,111,124,108,74,160,242,27,36,75,93,36,119,252,160,23,72,12,90,125,4,97,109,55,152,90,44,250,240,135,140,117,22,118,183,54,49,216,90,203,134,248,242,41,81,132,46,31,42,46,59,72,72,237,199,77,91,211,201,234,219,90,36,112,18,13,214,218,21,31,151,191,167,96,17,51,253,103,5,5,195,60,179,255,192,94,203,194,64,110,174,73,226,198,231,134,68,68,0,6,17,33,56,242,13,209,168,248,86,152,223,92,202,12,90,40,8,140,96,178,117,144,162,140,164,162,14,207,44,44,255,7,5,5,110,125,166,104,62,167,156,65,40,170,24,137,108,74,114,215,161,90,90,113,47,220,97,133,132,14,163,62,3,50,6,59,7,55,147,224,129,192,242,42,9,220,226,90,75,60,3,4,234,18,96,212,31,26,2,8,33,101,39,86,130,29,46,16,144,253,112,248, +199,18,238,29,60,174,234,151,165,111,116,126,61,228,229,27,57,134,157,129,134,56,118,162,142,222,241,206,95,93,220,34,145,138,119,46,117,25,140,66,9,51,172,9,8,211,112,73,34,95,185,106,242,251,254,175,197,92,222,223,168,34,179,221,235,163,142,118,211,63,118,57,95,2,201,147,184,133,69,20,90,242,176,87,171,63,94,52,141,101,220,208,147,221,132,140,108,101,120,25,136,123,54,203,154,188,236,101,51,221,64,94,69,241,12,207,63,126,174,71,224,26,48,163,210,17,32,34,161,218,134,120,85,141,51,141,212,127,190,128,64,120,66,31,35,186,49,61,59,9,43,210,174,158,140,210,63,220,46,215,7,76,179,36,223,29,239,176,235,107,80,3,202,98,74,234,0,177,85,217,74,195,24,64,82,176,47,233,169,89,212,72,108,172,114,210,254,215,159,107,159,247,125,117,76,88,160,128,219,125,252,178,77,110,211,175,233,47,52,126,93,135,189,239,247,138,157,90,86,135,53,137,120,229,148,223,26,237,237,38,72,112,28,48,118,100,109,8,235,71,218,11,241,114,216,178, +219,55,112,48,114,13,63,21,185,173,106,93,116,247,166,208,105,137,58,239,141,160,153,233,173,220,82,167,55,219,209,62,121,185,14,250,167,176,55,193,179,219,79,9,251,11,215,146,94,44,53,252,171,54,26,182,184,138,32,45,194,108,185,140,73,19,64,100,106,192,129,186,14,143,95,17,165,25,164,241,7,242,84,172,233,230,222,8,233,132,145,132,15,200,59,9,221,202,39,25,168,54,40,86,172,109,20,122,59,0,91,156,28,177,101,126,158,181,28,186,40,98,90,232,136,36,222,88,169,247,253,115,32,37,84,240,123,58,68,231,137,19,115,56,119,244,248,71,109,60,107,86,47,111,155,3,94,20,236,69,14,250,115,163,163,235,220,6,49,204,43,27,204,211,161,11,194,195,159,70,89,59,233,7,152,74,180,84,254,207,126,39,251,17,75,125,222,254,11,130,48,80,202,158,148,20,120,157,3,110,179,215,242,120,61,18,151,206,11,142,81,5,179,174,251,122,187,196,69,68,28,98,75,246,186,82,221,68,211,151,186,195,94,36,18,207,141,38,206,173,235,156,149,251,5,33, +191,134,57,195,232,74,49,141,149,156,52,105,78,244,159,151,9,85,224,38,15,114,222,109,183,73,238,146,52,172,224,245,182,73,68,7,197,99,147,163,211,228,28,245,3,73,210,252,201,2,41,206,207,149,45,96,179,166,59,199,59,83,116,69,201,171,243,195,203,202,140,87,72,109,142,41,27,198,212,60,42,189,164,30,139,155,251,171,223,229,250,46,114,155,245,2,164,247,164,234,162,114,58,42,109,110,208,114,203,111,49,48,138,193,57,168,127,192,65,182,7,88,34,137,246,81,137,200,127,127,79,241,95,2,97,11,115,14,177,225,14,251,225,8,91,245,160,18,126,95,175,154,191,158,215,227,230,166,232,7,231,4,186,149,221,76,200,87,223,129,40,223,116,236,68,226,63,111,212,98,130,76,133,190,174,124,121,148,93,144,80,242,97,211,118,175,174,91,200,1,19,74,247,135,171,82,11,68,90,141,18,103,28,8,48,74,72,36,7,217,108,61,235,248,0,242,195,220,235,29,20,165,255,0,70,138,17,200,74,39,71,41,168,96,121,233,128,126,121,174,109,227,32,144,238,5, +19,196,24,55,81,207,20,109,230,198,159,61,2,123,235,29,174,97,10,255,7,97,65,21,172,189,35,246,238,47,229,92,121,41,132,101,37,121,252,218,114,129,93,224,186,170,234,49,65,85,83,81,68,204,191,116,41,106,118,236,219,44,232,74,68,92,172,136,4,47,38,132,55,163,211,23,201,199,214,99,18,61,133,196,244,83,14,209,119,3,192,251,4,45,206,126,120,39,7,175,234,25,186,121,227,117,21,157,137,85,81,176,176,132,74,8,233,28,55,98,225,4,11,171,117,170,43,253,16,180,51,174,100,34,216,156,140,182,167,207,8,184,2,198,214,199,145,61,74,157,240,210,111,237,124,166,30,224,26,247,192,237,167,126,203,48,241,251,32,144,205,66,192,220,161,105,194,112,15,152,69,226,226,96,92,207,136,253,119,90,128,165,54,141,217,184,13,71,206,125,90,99,10,191,39,119,31,236,222,254,173,146,227,161,96,70,22,118,157,84,181,125,30,211,168,209,47,145,26,176,187,188,162,232,217,95,132,95,138,74,91,218,128,39,135,36,32,124,117,137,57,23,143,189,32,96, +131,145,21,201,62,144,128,150,65,249,63,106,220,230,22,70,74,190,12,161,100,202,52,229,107,74,76,119,72,142,135,180,191,32,184,176,222,95,70,58,228,206,164,161,165,80,107,70,198,99,123,38,37,164,250,82,223,40,30,87,219,224,73,238,55,125,66,199,201,46,197,228,169,97,31,29,101,49,108,197,115,14,155,31,102,99,102,10,7,68,136,79,217,130,250,106,176,171,76,9,30,20,87,40,180,141,255,59,90,136,166,117,73,32,84,218,109,154,76,161,67,249,225,81,182,112,138,213,143,70,150,203,213,96,221,223,222,205,238,5,98,151,11,194,172,73,242,195,166,235,32,221,255,9,153,210,154,149,220,48,40,125,104,100,205,199,208,254,0,2,234,25,170,237,181,204,37,23,83,48,36,5,8,181,70,9,152,144,102,97,26,1,129,143,69,74,5,34,58,60,187,66,32,108,78,60,89,230,16,112,244,15,232,212,166,16,156,142,208,198,92,23,172,45,216,1,24,200,135,3,253,90,2,149,87,245,131,20,102,74,91,66,203,2,74,144,170,130,213,178,132,176,130,177,11,240, +164,100,73,177,61,252,81,143,232,157,183,146,32,64,49,99,225,105,85,68,52,83,118,17,129,167,43,108,45,47,143,60,164,219,19,143,5,72,53,2,78,6,141,19,12,200,201,197,179,41,0,40,6,78,105,242,64,109,11,7,213,210,81,123,115,180,220,49,23,98,140,96,110,105,67,48,24,178,60,193,156,79,215,88,139,239,61,100,51,160,8,124,27,119,72,248,48,7,94,235,24,190,55,31,44,23,31,198,65,200,20,85,117,127,185,143,85,121,255,111,212,162,244,248,44,227,68,81,146,196,83,120,46,43,120,28,44,11,222,193,189,180,172,49,51,188,83,124,95,112,85,151,82,180,96,186,217,104,12,70,141,252,207,113,29,87,237,57,84,106,149,191,26,86,214,225,190,114,177,48,187,152,59,17,11,111,115,242,240,229,31,163,128,121,190,198,87,65,5,124,30,11,12,203,32,183,21,231,159,192,124,30,174,202,69,40,186,187,164,253,135,57,253,87,184,204,158,30,67,231,100,177,25,15,216,157,1,64,122,87,255,9,237,110,163,8,49,190,213,89,227,250,112,115,178,202, +15,173,240,93,196,52,96,6,56,237,84,151,230,240,35,158,11,172,219,244,114,114,50,203,127,49,255,105,221,93,69,72,193,22,205,159,21,151,230,226,16,3,75,235,97,178,17,140,168,136,136,12,229,109,255,171,204,23,214,35,77,252,170,202,44,160,86,59,44,185,198,57,121,160,10,127,217,136,212,152,152,224,63,134,248,59,124,254,22,252,60,206,245,133,32,151,245,41,3,82,224,4,2,211,169,90,118,101,138,18,128,126,225,83,25,137,112,133,219,97,232,82,57,203,103,65,65,49,167,77,183,38,104,138,115,172,245,152,249,64,44,228,17,133,88,230,149,38,231,217,52,189,81,15,13,247,36,153,6,142,15,125,82,188,80,72,205,114,104,190,175,229,10,22,196,66,118,172,45,100,151,28,34,170,140,216,253,136,107,6,162,136,40,26,11,184,8,107,170,107,233,191,81,31,84,6,37,153,227,147,172,252,20,34,26,186,54,191,77,51,46,98,30,218,45,66,228,159,90,69,110,183,149,248,59,185,59,67,62,2,179,83,247,247,120,121,24,36,42,207,180,122,206,156,128,24, +138,132,6,109,193,88,223,113,139,179,229,169,201,163,223,42,9,60,128,100,176,140,161,209,86,250,194,255,48,112,22,157,62,195,231,113,169,191,154,171,172,9,1,34,243,183,29,180,255,8,239,255,216,229,55,116,5,192,226,210,179,118,239,65,114,38,209,180,134,187,214,254,255,121,116,243,151,92,103,185,219,129,99,132,163,40,234,46,198,39,20,114,93,189,212,142,5,118,114,16,235,97,112,81,230,216,14,240,201,72,194,0,239,254,133,56,150,120,163,147,219,173,247,142,183,14,164,106,230,133,84,197,89,2,200,245,254,236,242,220,240,3,178,248,121,54,246,83,39,149,213,88,149,159,5,173,172,159,195,206,198,228,144,10,165,98,250,243,147,104,88,204,192,102,18,152,197,192,192,57,58,159,174,191,52,177,178,180,179,137,57,203,73,160,127,106,121,71,46,38,125,157,174,143,197,112,253,86,189,58,55,53,114,104,154,154,137,60,254,53,94,132,45,135,89,239,84,245,126,177,250,106,4,146,78,105,121,72,31,42,113,141,157,161,177,172,125,66,205,67,131,79,60,204,108,23, +154,159,24,27,21,12,46,61,34,49,200,41,70,73,23,234,103,206,128,113,20,61,232,52,102,121,110,253,240,110,68,132,210,11,66,132,93,134,174,215,57,160,141,13,67,42,1,2,0,175,238,121,11,0,29,67,73,146,135,145,11,130,230,70,232,21,212,139,82,26,40,39,234,148,236,171,39,88,167,64,171,67,71,87,237,144,137,174,21,0,131,107,179,62,72,136,5,136,9,148,34,159,24,39,126,112,25,45,218,40,162,39,202,69,0,181,219,162,104,153,93,23,6,32,153,22,150,187,36,234,69,165,188,83,125,51,184,52,87,122,77,103,49,48,53,178,54,66,105,193,58,63,31,163,207,96,120,82,250,89,201,168,228,94,152,113,243,16,113,246,193,230,117,53,21,178,99,30,156,200,61,248,230,18,36,244,92,200,51,33,37,210,171,115,221,62,183,251,171,171,166,207,138,84,56,167,17,206,104,73,205,122,149,201,172,169,255,184,203,107,42,253,33,252,90,247,79,12,172,149,199,240,139,174,204,29,146,116,4,128,230,198,233,234,142,40,59,51,78,124,110,249,158,19,156,218, +165,183,226,232,85,227,226,190,38,50,45,120,127,205,82,109,127,201,173,96,245,240,4,246,243,99,70,72,196,54,117,151,62,106,75,129,103,22,63,48,142,71,127,10,9,178,143,172,196,167,41,101,0,5,149,127,59,53,157,41,213,156,14,50,240,247,3,144,230,139,87,73,85,156,143,81,189,226,163,157,18,95,222,0,68,212,171,52,34,14,194,108,164,200,148,226,131,72,163,79,144,243,204,44,167,211,167,152,138,171,116,136,220,75,232,179,183,211,59,219,123,204,12,111,9,244,121,83,130,23,69,95,3,202,173,121,129,84,88,195,51,157,80,223,136,252,55,127,194,167,114,198,30,33,126,35,104,10,119,66,106,41,19,151,128,168,36,104,164,132,193,95,45,30,30,223,0,82,7,126,13,140,53,64,52,138,129,146,253,139,35,174,255,46,215,168,31,140,196,121,199,20,36,146,9,64,123,212,249,153,137,66,255,244,233,84,33,132,164,216,131,133,158,27,64,236,218,205,85,238,46,34,233,158,66,35,6,250,46,249,32,114,236,185,169,32,133,9,51,22,102,108,222,2,2,66, +164,208,242,128,165,52,53,184,48,73,18,74,44,69,150,170,42,143,82,127,82,120,137,125,78,227,183,121,72,161,181,64,177,45,76,25,168,206,81,251,167,111,54,58,39,57,20,101,229,214,20,246,51,203,143,18,8,88,199,57,238,11,105,140,117,78,250,211,0,125,219,194,177,169,25,48,107,69,149,5,50,179,149,153,32,118,220,73,228,92,143,201,54,74,189,206,245,251,214,126,101,133,125,197,77,143,139,145,166,4,175,86,57,227,87,214,14,189,136,26,120,228,107,144,26,113,162,221,226,136,51,252,72,239,41,100,96,160,210,1,87,188,142,31,246,221,9,225,229,246,190,111,165,16,87,85,114,195,207,200,11,168,31,5,140,46,29,121,105,226,18,76,49,24,128,185,91,177,56,133,204,129,9,102,163,53,131,233,129,126,161,126,40,43,87,179,65,241,33,17,19,12,61,153,47,107,250,49,177,5,221,129,68,172,29,176,218,255,181,49,149,25,56,35,29,116,201,72,173,34,49,82,132,140,217,92,229,219,25,179,71,103,156,24,192,8,23,102,103,146,136,190,194,16,213,78, +75,182,178,214,186,5,46,182,8,129,156,29,152,86,127,191,179,234,253,229,30,94,53,240,104,244,138,155,119,86,76,132,228,17,111,31,43,196,25,221,200,250,165,235,104,35,146,75,83,58,134,106,128,206,111,40,198,21,198,180,92,58,7,192,199,19,72,133,172,75,88,171,195,125,83,62,208,158,205,185,91,81,152,7,224,105,211,164,70,173,160,227,13,161,197,107,254,194,96,180,253,204,177,184,164,18,137,48,11,220,224,171,138,205,130,214,170,6,4,253,119,148,18,48,57,205,76,130,44,243,230,11,74,11,132,28,140,216,33,1,225,12,251,107,39,73,179,171,75,51,34,18,130,65,87,203,170,155,140,121,80,72,197,204,7,146,251,26,208,129,5,210,71,242,37,231,88,72,140,17,196,160,72,94,80,34,43,104,42,46,88,145,166,200,207,26,201,243,129,206,18,66,240,14,194,130,230,140,42,78,131,5,97,75,77,65,84,109,102,44,138,231,4,36,89,200,52,13,19,38,192,82,33,243,162,52,132,201,231,134,25,48,245,244,20,1,155,203,103,114,152,216,40,5,95,98, +164,251,80,32,63,130,199,116,44,139,67,235,96,80,105,198,86,50,35,71,56,141,150,219,225,126,126,215,128,77,56,253,46,225,166,46,54,184,48,157,214,7,187,161,109,118,169,92,156,149,62,255,151,117,213,231,180,234,181,66,217,227,151,206,89,69,127,186,252,199,70,6,24,200,45,125,78,20,182,183,227,195,167,213,90,28,202,90,180,150,77,100,117,11,180,5,147,46,3,98,60,54,63,235,175,214,72,157,102,127,23,145,237,248,86,218,183,134,224,142,39,34,251,185,37,130,72,248,216,106,162,33,183,213,142,219,71,7,50,9,52,36,88,140,67,25,215,55,22,208,136,46,101,147,98,80,22,77,137,248,71,178,114,195,96,97,16,233,47,20,151,230,102,51,147,197,201,159,177,9,215,147,134,194,225,240,198,240,200,233,10,172,252,207,79,183,133,114,194,238,135,183,125,255,217,31,211,169,16,250,66,237,15,118,112,154,249,7,172,222,106,37,238,235,233,243,46,45,7,95,216,13,241,193,9,23,219,240,44,96,10,1,176,68,2,22,179,227,222,59,6,243,238,50,218,159, +239,128,200,194,220,163,203,240,5,108,10,46,195,202,28,54,89,175,1,187,44,16,49,36,167,225,17,97,80,164,87,201,86,92,11,1,48,1,188,173,237,43,174,215,13,70,172,253,77,38,31,197,252,180,42,254,144,240,196,27,68,207,217,9,19,82,50,0,30,64,241,45,91,214,82,154,236,29,188,159,160,95,67,62,0,138,186,145,127,121,118,46,10,85,52,2,41,193,238,120,36,211,211,40,178,42,205,128,48,130,176,222,228,176,244,6,66,119,18,216,42,71,4,211,58,38,117,15,4,13,145,135,206,215,204,189,131,48,233,212,255,9,74,225,129,16,217,89,56,178,60,19,144,56,181,227,78,125,157,132,243,70,141,231,110,156,248,158,202,145,81,123,152,154,8,167,71,231,115,15,174,45,43,82,187,222,154,135,219,121,200,213,99,109,50,218,121,104,243,111,230,119,187,93,119,132,180,116,37,128,232,251,2,158,55,9,28,10,160,223,126,44,210,46,157,229,179,173,237,168,144,255,78,210,167,67,26,130,128,26,26,95,13,104,239,135,214,62,223,71,239,160,195,244,134,69, +166,119,204,152,185,48,191,91,254,211,142,251,192,226,196,13,173,127,116,212,53,225,189,59,88,154,194,229,129,136,160,161,0,55,245,151,225,179,168,255,153,63,94,26,41,196,14,245,179,36,156,51,79,82,151,91,6,198,122,210,11,242,104,235,156,198,248,234,106,72,68,185,252,210,56,242,73,229,149,37,45,147,122,149,231,227,0,132,168,146,201,200,214,72,70,69,195,130,154,12,11,139,92,69,120,195,74,27,199,114,57,20,5,56,231,36,246,224,214,170,181,97,18,90,23,54,232,77,1,198,173,120,41,226,248,223,95,33,205,8,19,116,62,119,75,245,144,226,65,160,71,101,47,113,244,29,220,5,168,223,174,219,191,52,223,177,4,244,158,122,145,59,251,210,19,178,172,108,189,6,125,200,206,235,98,195,66,64,210,94,110,193,224,238,91,117,3,118,57,32,7,99,4,195,187,211,221,106,201,32,1,210,148,79,190,149,184,109,76,142,206,188,34,65,62,115,244,225,102,212,161,51,165,109,110,62,182,181,103,203,109,185,218,180,165,25,92,159,188,62,68,174,132,22,98,106, +62,22,53,243,147,109,70,112,57,87,72,226,142,4,201,145,121,176,1,157,125,168,211,178,124,134,119,118,140,166,193,155,91,132,130,115,25,223,68,169,60,5,80,180,46,137,16,18,148,253,5,249,49,37,44,140,144,129,99,191,17,193,24,192,9,102,3,106,160,64,40,90,254,121,199,224,159,228,84,44,96,248,30,101,3,33,52,173,237,64,204,177,183,226,26,138,159,101,101,130,144,196,192,243,119,213,227,30,152,177,241,142,57,252,221,195,84,131,191,168,211,111,205,242,68,5,83,254,37,205,20,160,5,161,156,143,212,85,164,87,151,10,17,208,6,219,139,201,228,54,60,62,151,227,161,120,83,87,129,20,236,226,64,203,90,37,182,0,216,11,106,221,63,61,172,112,225,1,7,202,208,156,127,215,22,33,107,224,64,86,201,222,79,19,231,107,45,126,111,165,6,39,210,242,47,187,221,189,13,219,238,247,62,255,118,150,77,167,107,17,7,183,82,27,159,141,137,56,117,122,211,211,206,84,114,104,45,120,0,152,9,133,18,182,194,158,181,151,90,147,198,124,192,85,228,69, +175,219,254,138,92,92,32,26,161,90,50,205,190,188,18,198,82,218,53,178,199,116,183,95,188,189,53,222,19,216,99,77,245,240,235,52,145,15,248,107,113,178,120,199,26,111,185,149,113,54,246,193,181,162,131,8,225,181,61,31,235,182,13,69,181,12,77,235,150,245,212,4,149,172,66,134,180,85,100,36,85,216,8,68,228,187,170,99,140,48,4,215,81,33,53,72,134,255,64,148,137,120,254,215,109,176,61,94,63,83,195,18,16,224,47,212,13,217,191,92,94,63,4,15,109,143,152,4,117,150,46,226,32,123,30,112,55,202,213,64,139,153,111,167,79,29,196,238,7,156,202,138,159,159,58,43,158,136,220,102,22,21,73,171,198,13,157,105,109,132,252,128,53,194,76,207,71,35,226,214,93,0,253,69,244,0,126,241,212,186,230,59,32,19,4,194,191,241,104,53,110,221,130,134,84,148,8,114,62,98,119,237,126,30,152,242,17,169,103,187,79,245,77,231,187,144,120,128,219,9,209,224,128,5,202,15,114,237,179,89,131,109,119,131,241,223,173,29,65,187,203,41,22,63,149,164, +55,109,249,23,124,110,74,159,84,131,97,58,26,218,22,226,21,16,100,200,128,192,130,9,124,152,152,71,31,81,226,115,194,141,55,56,3,24,166,178,47,169,233,231,102,22,160,64,15,86,77,136,16,82,21,85,7,9,17,213,161,18,22,224,98,134,230,239,71,255,13,36,177,50,242,92,106,4,135,226,155,60,98,246,38,21,55,220,221,104,244,129,15,235,16,153,174,233,95,235,141,154,104,85,87,158,202,25,45,211,95,2,254,119,70,232,74,243,237,2,136,60,70,251,195,243,8,95,111,103,171,225,67,174,224,99,57,58,42,126,110,203,80,171,147,234,211,11,58,5,190,167,205,229,5,219,246,167,226,111,69,41,173,169,179,211,190,230,72,67,56,253,38,245,209,64,32,214,223,247,28,168,208,127,254,235,216,104,163,94,29,28,53,102,242,87,83,203,16,10,239,52,43,189,74,42,34,116,244,237,246,157,249,182,150,225,207,87,120,106,123,132,23,3,113,195,35,94,12,203,231,253,220,4,229,207,235,157,28,250,41,3,46,189,237,246,250,199,101,0,24,235,168,62,61,67, +99,16,52,44,220,113,66,135,21,4,126,149,40,234,211,14,61,19,236,208,167,123,95,235,175,251,156,148,221,125,214,110,206,66,38,14,234,208,168,101,250,18,84,28,229,133,23,12,69,192,149,120,194,163,195,77,87,152,204,93,9,90,251,127,23,172,53,12,244,28,183,10,172,67,109,116,233,40,90,213,43,186,116,243,108,102,245,48,131,88,72,117,248,150,222,62,191,219,229,76,244,90,109,170,186,50,57,174,105,119,204,145,41,232,208,154,10,197,244,74,248,197,108,255,22,149,74,246,227,218,228,93,154,174,93,144,254,90,21,148,227,242,168,201,134,116,198,20,191,91,55,196,125,239,198,4,153,79,124,99,143,71,49,252,144,231,218,145,167,104,195,34,12,183,54,71,111,4,16,254,233,54,132,51,134,67,133,105,192,12,103,107,93,66,98,50,208,62,81,32,159,106,216,229,217,93,17,95,146,157,194,68,1,144,96,11,155,3,235,145,165,115,168,69,10,197,255,36,147,28,32,42,63,75,203,147,179,148,253,13,75,222,29,240,61,51,30,247,184,101,254,21,111,160,215,38, +118,4,60,62,42,56,226,185,181,169,104,25,81,234,64,33,38,129,137,87,117,128,136,215,228,254,174,196,39,32,231,6,222,187,69,51,75,39,139,79,204,126,1,226,109,224,180,124,6,124,130,78,133,154,218,160,54,15,131,26,59,68,205,3,0,73,232,152,29,66,150,17,151,30,200,172,183,189,72,56,247,42,226,204,201,147,194,219,15,233,176,241,103,79,189,152,153,45,34,237,133,254,108,34,95,120,216,230,252,4,170,198,204,102,251,30,204,250,136,237,235,113,89,47,167,202,225,195,69,74,65,37,170,79,93,75,204,64,225,159,35,234,126,87,241,58,107,221,107,224,42,123,13,68,11,127,153,19,192,144,246,155,172,248,114,122,191,122,224,146,203,118,188,167,249,23,240,233,188,190,110,223,238,175,112,12,180,199,139,98,68,168,179,140,197,62,172,184,73,207,55,22,54,24,176,222,31,181,111,201,231,253,106,43,252,160,26,179,147,4,186,96,197,215,132,197,157,50,244,47,167,220,98,128,243,139,7,142,128,247,239,98,229,37,105,237,121,15,78,38,205,251,207,239,205,126, +191,222,174,111,242,37,239,192,79,107,82,175,240,74,223,158,100,25,84,94,19,193,226,125,12,12,54,13,165,117,170,3,230,90,115,131,49,165,69,36,76,17,24,90,164,68,40,63,84,98,0,153,152,179,239,42,97,154,72,232,163,45,13,246,64,225,156,211,89,133,41,28,174,86,52,203,126,110,142,131,64,168,71,211,172,107,144,183,174,157,200,247,152,36,170,149,108,103,250,82,95,144,176,60,205,202,181,63,77,73,93,38,171,44,107,123,173,92,145,205,55,248,234,233,162,140,2,196,230,91,154,226,90,230,114,63,184,14,205,17,173,203,178,120,146,141,132,142,70,154,47,175,243,27,131,166,107,23,59,176,189,188,16,16,101,230,248,177,24,141,68,179,201,231,171,251,205,195,31,163,205,125,49,122,227,38,187,217,236,181,122,53,86,111,75,229,45,11,28,254,125,238,198,136,81,138,212,235,237,11,215,252,227,95,193,139,226,6,237,163,149,95,4,93,178,224,193,128,0,214,49,134,110,197,39,8,195,130,66,111,241,64,33,137,68,136,36,88,253,157,240,67,161,108,55,160, +253,139,1,218,195,67,36,222,36,134,144,127,118,92,98,222,94,137,67,190,230,101,37,219,217,39,247,243,178,154,183,187,131,60,75,192,17,64,198,140,90,77,180,153,181,236,90,168,14,94,243,154,217,221,9,157,92,3,195,210,120,136,130,178,32,10,40,89,167,41,157,254,123,69,145,16,183,226,220,39,188,247,24,2,177,33,215,64,128,14,3,106,90,105,205,200,213,53,120,214,245,97,144,250,192,208,23,202,62,76,96,146,93,191,172,200,116,35,53,179,65,179,169,138,253,205,203,178,232,37,96,53,219,20,142,183,87,127,119,185,28,250,122,30,29,191,175,201,230,243,58,28,190,153,246,170,29,106,135,190,195,215,162,121,232,6,13,159,251,223,223,90,214,36,206,61,255,234,203,254,156,2,1,58,254,179,56,65,212,198,227,238,181,123,145,63,124,3,125,179,184,166,207,241,162,117,223,242,121,12,212,45,250,239,89,132,201,170,190,109,149,157,115,95,137,188,254,252,13,198,172,196,33,231,103,95,66,253,50,52,176,3,238,37,52,7,146,180,183,85,159,91,117,222,7,190, +208,199,207,157,171,135,187,35,144,125,189,245,126,39,227,246,187,188,254,184,16,167,10,151,28,71,60,195,75,233,6,64,114,154,38,5,37,22,90,91,234,8,23,132,135,157,113,25,236,255,203,39,189,163,6,190,25,193,32,177,44,244,230,31,247,159,59,125,16,41,173,101,229,233,9,165,158,238,85,216,19,162,12,157,171,45,61,80,202,170,40,153,95,107,91,107,11,10,155,45,59,202,68,104,193,178,51,186,160,181,9,80,145,69,69,188,179,45,55,155,172,72,177,35,219,90,215,85,212,195,74,238,54,219,133,105,1,25,150,206,60,243,42,60,1,75,7,148,71,38,13,34,138,111,47,135,127,43,31,101,23,146,236,230,220,106,61,187,124,119,7,60,87,225,188,216,252,165,97,17,35,235,42,14,170,21,47,138,236,198,154,201,232,207,191,174,15,240,137,165,220,159,182,206,79,98,73,83,94,158,129,37,69,66,240,160,120,91,200,80,205,195,115,181,18,230,149,72,218,17,245,44,144,59,99,4,155,50,112,7,5,24,68,36,80,10,49,241,93,77,161,168,101,250,195,33, +109,1,205,254,53,5,110,26,127,25,22,81,180,82,119,121,193,192,229,117,211,235,7,184,173,244,241,59,84,219,235,66,80,76,25,143,231,226,56,200,39,6,166,252,149,73,138,153,250,118,118,8,213,78,133,3,192,246,135,134,31,25,75,253,82,112,39,7,16,171,155,40,98,102,86,180,194,60,67,187,69,109,139,7,188,110,77,165,58,237,232,241,192,169,142,190,3,201,40,245,70,78,201,206,148,5,86,21,6,0,19,85,193,216,139,165,187,155,226,253,96,147,8,155,128,42,219,20,85,32,221,127,52,212,62,113,177,91,61,150,255,79,9,218,189,14,40,237,139,212,215,227,173,102,122,231,132,146,127,159,211,207,87,120,57,191,239,29,135,170,214,161,169,207,51,82,56,28,56,77,7,90,38,243,253,102,212,100,107,175,228,219,184,71,101,180,115,39,7,25,97,150,226,29,66,189,69,95,3,89,159,131,226,207,64,182,174,93,171,171,237,208,182,203,74,191,253,6,166,195,193,113,31,212,239,239,29,159,199,199,135,110,142,127,103,221,110,106,79,95,113,9,98,188,85,251, +69,134,236,170,0,4,210,111,8,65,140,69,231,139,34,60,255,49,215,203,187,223,93,154,78,45,109,5,182,66,134,157,216,200,200,84,2,177,178,255,26,66,86,27,148,0,138,56,3,129,127,196,112,102,1,100,44,76,163,63,226,121,23,142,140,32,119,243,88,250,115,249,236,102,145,211,196,214,80,102,192,97,34,169,185,27,186,171,8,64,107,39,255,132,226,139,147,245,1,43,119,107,58,36,245,186,148,122,93,13,62,65,181,48,47,101,191,13,47,115,117,112,112,119,179,208,216,170,132,143,62,2,111,150,230,126,78,32,100,175,88,231,2,114,2,172,191,182,204,45,151,156,205,175,57,169,44,170,35,5,111,115,110,144,145,157,113,108,17,154,245,115,45,253,140,212,139,224,164,179,26,196,84,190,19,242,187,58,16,155,224,241,85,4,119,161,67,239,217,61,242,26,78,29,133,180,49,242,170,25,19,29,117,160,192,244,128,197,19,173,14,168,102,7,78,161,155,146,166,67,168,6,31,107,219,48,164,189,134,21,27,183,30,145,201,41,43,136,30,126,201,242,131,221,191,87, +31,110,139,163,167,167,14,98,206,178,48,162,213,28,136,247,135,174,58,191,255,204,167,43,151,231,249,242,121,6,62,175,199,197,39,196,185,157,11,7,5,204,0,243,15,17,10,133,162,14,192,110,6,108,96,216,156,50,96,175,18,150,231,88,22,87,53,20,103,52,163,35,40,0,160,82,123,238,91,174,148,106,149,206,181,109,206,51,148,154,86,27,86,193,181,91,141,28,1,11,65,226,148,57,13,200,137,5,62,208,4,78,69,35,219,58,17,98,253,23,146,79,239,23,178,152,118,19,223,171,128,65,93,23,74,183,172,78,1,4,233,79,108,134,245,70,240,50,55,229,3,31,195,98,38,22,103,72,239,251,136,20,192,148,215,31,151,199,187,107,215,155,48,120,53,255,221,37,94,161,225,239,230,251,73,206,239,131,65,225,219,253,221,92,154,205,207,247,114,41,124,186,141,164,190,240,89,252,228,29,58,92,7,132,16,127,246,141,65,221,239,104,116,58,237,125,215,233,112,253,123,10,78,88,55,38,195,239,194,123,148,95,181,248,217,11,255,38,42,239,123,158,111,115,96,253, +70,153,243,246,78,61,27,127,242,108,191,70,130,173,229,244,128,255,249,139,252,253,109,213,224,42,40,56,23,18,78,89,248,112,56,131,163,157,36,240,25,78,154,70,241,196,44,146,20,64,1,130,96,225,137,168,93,159,140,232,23,114,228,72,210,195,134,47,251,167,110,123,244,62,31,125,35,0,208,216,186,45,99,52,246,61,168,31,114,30,66,11,132,59,148,230,199,163,175,193,227,177,246,106,210,132,206,181,14,92,53,54,211,58,50,176,123,228,108,180,19,139,75,254,220,91,85,146,85,145,121,103,145,100,252,86,117,56,202,181,192,246,17,244,61,235,28,68,170,106,150,170,117,49,253,88,49,39,5,173,127,255,50,34,8,18,20,240,150,17,119,255,26,86,172,171,183,213,232,243,90,155,142,169,138,136,206,203,105,46,245,58,82,135,85,53,253,134,122,122,79,25,39,215,192,51,226,251,205,70,191,184,90,99,90,72,24,202,120,80,42,87,92,197,156,191,102,167,120,130,23,181,110,223,210,113,132,29,112,16,129,33,99,215,2,0,123,11,41,69,158,2,72,80,208,212, +25,182,3,72,140,29,75,14,0,125,214,158,22,80,8,37,9,91,192,56,45,144,185,194,110,215,201,53,189,92,194,148,199,23,68,34,64,194,64,248,118,231,182,188,62,71,195,231,176,179,184,172,180,162,180,225,40,194,208,89,128,183,138,30,126,70,204,181,37,0,226,167,93,60,8,242,4,42,163,158,75,102,217,168,252,103,234,41,170,40,57,210,232,9,168,14,124,7,239,21,11,220,76,23,240,34,132,186,45,72,27,225,234,234,152,121,81,78,185,162,128,74,209,53,53,158,210,177,7,132,129,11,90,206,33,76,42,255,62,68,210,8,78,139,146,237,252,140,72,51,78,227,0,137,126,219,252,14,171,253,192,249,177,55,28,206,249,165,67,37,120,112,47,52,236,110,251,167,48,144,209,81,209,112,70,199,98,86,234,38,133,31,157,42,212,254,123,103,205,89,168,189,234,90,24,236,219,223,204,236,219,15,141,19,139,213,237,123,73,189,130,213,71,242,27,252,204,247,251,203,228,91,45,14,139,145,91,68,112,56,52,63,193,61,159,230,32,90,17,187,50,36,52,117,226,136, +96,193,203,211,177,148,73,134,14,152,21,124,206,110,126,58,145,244,149,232,1,100,231,23,138,36,210,222,191,90,33,225,80,9,191,106,160,189,248,211,10,156,102,98,201,75,158,64,172,75,195,211,183,25,140,188,22,153,213,245,245,42,162,119,237,28,66,191,61,92,179,112,34,160,149,44,114,224,128,71,195,88,232,172,64,225,22,83,85,248,122,204,21,2,132,195,202,191,112,144,131,44,255,54,183,182,145,109,129,142,23,14,78,110,75,188,201,247,23,0,82,223,162,141,167,186,213,212,155,125,77,49,122,67,36,253,241,66,193,197,212,88,140,230,235,50,99,233,217,124,27,133,25,211,41,173,249,59,90,15,104,78,42,120,242,0,92,136,175,178,232,3,98,228,222,58,122,130,187,100,82,66,41,169,180,235,168,213,116,7,234,161,14,10,184,155,101,9,241,235,143,21,82,241,28,13,235,246,175,30,226,161,54,216,150,31,156,239,32,7,109,62,20,220,22,180,39,4,48,162,48,39,192,181,92,1,112,129,180,231,146,238,66,42,3,65,54,166,66,179,180,13,2,142,54,20, +234,53,224,216,28,3,166,222,141,198,220,75,199,51,208,208,27,219,41,16,84,110,19,40,124,114,129,235,63,99,205,239,130,234,127,135,99,205,161,108,207,120,157,118,206,160,63,193,9,99,207,134,145,70,168,209,41,176,7,213,158,201,66,88,106,48,183,56,159,161,85,204,210,226,160,135,6,80,144,131,148,33,160,125,146,148,174,166,62,139,15,206,166,184,128,140,72,126,186,93,19,26,151,92,60,93,127,94,47,218,55,225,211,148,53,201,166,130,78,62,176,63,190,182,158,46,166,5,210,180,104,198,170,254,32,46,17,201,191,176,46,1,246,99,205,118,66,163,60,57,45,224,144,160,154,88,8,40,61,30,53,253,62,239,201,98,14,236,143,111,156,246,130,111,98,94,250,14,63,114,53,76,50,138,230,173,225,247,121,120,124,62,14,46,33,7,5,118,246,73,33,153,139,78,22,42,246,62,140,124,174,229,81,14,193,61,58,145,83,203,128,147,29,69,25,138,3,231,72,129,183,210,71,76,137,50,146,135,33,172,49,153,56,198,62,167,91,87,30,94,213,18,141,56,32,88, +121,17,62,33,13,4,191,110,199,250,167,58,30,89,53,124,182,231,255,13,18,109,223,181,223,40,47,191,33,194,192,80,67,31,28,0,68,153,118,5,15,146,44,245,154,56,64,170,93,165,47,230,208,216,107,248,148,170,21,119,82,187,26,210,160,137,141,16,103,216,124,199,210,50,73,138,6,160,15,49,137,199,98,241,111,108,22,159,197,98,181,52,205,134,219,171,238,150,35,130,173,80,0,170,64,79,195,36,168,31,84,125,34,80,22,232,84,251,250,52,78,141,128,223,185,76,65,165,73,104,155,79,155,16,214,50,120,46,246,197,143,249,165,184,127,87,255,242,224,243,142,52,150,84,102,178,15,20,46,255,208,10,224,68,78,42,234,197,28,37,201,182,120,102,99,73,203,7,85,80,181,111,25,140,180,59,43,100,130,162,47,135,38,197,141,95,252,163,62,247,215,227,112,41,120,92,166,149,68,13,66,113,116,7,179,150,6,69,218,74,230,66,73,40,140,208,218,142,137,17,189,88,227,239,90,156,67,91,176,116,205,167,178,202,215,132,215,106,52,116,165,19,250,255,49,85, +175,31,106,25,3,92,228,233,198,0,64,65,158,14,77,96,178,216,12,242,52,18,229,196,176,72,96,207,156,50,11,153,57,104,40,215,229,43,27,60,242,121,5,10,191,20,100,209,14,218,235,92,59,139,136,205,236,128,4,5,181,151,166,206,190,230,129,207,121,244,175,98,35,136,233,153,9,98,16,121,40,192,10,158,5,56,0,20,99,113,192,209,37,115,16,100,12,160,189,174,41,120,28,26,60,138,152,105,170,48,88,208,130,170,90,40,17,69,147,118,98,87,3,8,171,151,235,201,12,38,164,135,153,172,157,128,105,188,11,132,144,164,110,124,96,73,131,69,190,101,167,52,219,206,69,45,218,93,72,17,85,167,193,161,12,224,57,221,133,125,110,41,242,75,179,182,249,199,99,218,25,173,244,92,143,107,133,86,159,238,7,103,1,83,218,248,215,43,126,33,143,41,32,93,67,216,21,105,36,51,232,165,150,12,167,37,21,10,107,177,183,203,25,231,17,190,68,106,201,164,126,240,225,157,53,239,162,161,51,19,242,79,24,149,255,153,237,93,159,117,24,226,60,159,179,71, +206,144,199,128,60,139,112,56,210,112,199,129,93,50,15,40,226,62,221,64,4,164,127,109,61,22,224,176,102,180,57,58,53,224,16,160,207,220,95,1,86,10,164,44,116,189,134,245,145,219,17,211,236,57,52,82,243,100,80,210,238,240,183,180,108,236,255,50,117,227,65,232,77,186,74,177,219,179,189,197,13,47,76,155,129,155,194,157,174,211,111,49,236,4,221,231,201,109,231,13,73,23,215,46,56,248,133,68,252,134,234,128,135,190,204,99,229,41,59,247,215,176,173,217,47,57,242,30,201,2,224,28,112,217,64,28,52,239,98,11,57,17,19,7,16,198,33,199,194,15,81,172,160,106,20,42,3,203,219,69,170,219,68,110,114,89,190,100,189,161,154,228,106,116,45,93,44,34,86,117,82,159,229,7,202,233,118,235,75,183,123,219,133,60,253,134,123,72,189,7,87,241,190,219,244,162,247,217,191,119,242,239,132,102,220,203,195,117,33,113,148,50,137,72,36,112,160,142,69,27,58,170,68,147,74,1,173,21,85,96,190,58,46,228,183,239,190,228,240,58,189,11,13,85,29,61, +156,47,42,61,252,181,45,202,244,150,60,206,131,58,145,236,221,253,245,39,165,145,252,225,132,18,203,137,47,105,210,72,114,58,105,61,71,117,219,125,84,65,240,111,185,98,28,9,92,134,5,31,96,136,176,178,86,117,210,168,89,25,68,232,152,236,5,13,227,183,114,95,177,16,85,35,102,26,109,212,152,175,60,127,64,158,180,67,101,182,32,165,148,1,20,227,112,52,253,158,50,43,113,255,218,202,82,65,52,249,154,58,144,152,132,152,141,145,117,166,118,209,233,133,5,90,13,207,38,121,54,148,14,6,99,70,48,147,138,34,125,169,133,236,146,234,244,131,74,229,218,241,130,168,165,90,20,11,152,167,133,204,215,165,45,113,33,228,78,165,182,83,227,2,154,7,71,13,25,20,56,170,129,164,178,238,70,86,31,150,213,156,77,11,25,93,87,214,186,105,143,12,156,154,115,117,232,104,237,47,150,187,17,174,186,16,2,88,174,24,89,67,211,237,110,39,3,201,20,204,54,4,127,16,56,31,70,175,215,110,99,255,76,174,78,64,3,29,77,197,11,106,12,22,65,41, +137,172,191,119,236,110,53,36,43,211,26,202,243,138,37,203,218,95,199,174,36,18,158,61,27,22,94,231,66,132,244,229,188,147,235,246,121,220,214,134,54,71,231,16,12,74,224,154,106,40,225,146,120,53,132,179,224,68,130,238,243,38,87,96,36,97,129,179,91,254,180,123,223,117,155,42,188,52,222,48,226,29,141,188,77,89,253,254,125,11,236,38,239,254,193,234,93,219,168,217,44,188,56,66,248,110,70,179,103,134,179,142,181,65,238,58,59,52,225,161,0,116,131,109,29,189,168,188,182,34,200,138,46,83,115,24,242,46,153,37,144,116,58,221,138,19,166,83,88,234,159,190,86,114,192,144,164,45,237,206,166,219,23,240,124,188,61,137,57,57,159,239,242,242,165,228,100,3,107,83,42,213,175,234,236,90,127,204,118,206,15,91,199,180,177,251,197,191,206,173,173,87,252,184,77,167,147,229,11,124,206,247,243,177,164,253,246,58,157,90,173,90,35,74,6,0,18,6,43,45,8,113,15,226,233,166,145,30,18,33,88,227,162,90,50,96,131,191,211,174,250,106,53,91,56,168, +108,251,196,52,204,131,58,236,98,100,142,184,130,8,10,100,234,38,25,161,170,88,95,217,42,226,199,44,104,114,88,168,127,254,201,160,133,102,117,58,253,106,181,221,175,120,124,174,128,39,72,116,186,157,241,86,111,120,97,24,247,208,189,114,54,204,163,149,70,229,227,185,124,143,34,251,254,7,76,4,39,185,242,15,150,72,254,178,72,48,62,233,123,222,196,61,131,200,232,207,251,111,175,19,225,188,165,3,136,80,125,19,32,82,199,110,139,89,44,113,147,54,222,128,209,73,204,236,92,208,126,68,117,113,128,172,87,139,207,201,67,223,97,253,46,20,245,83,16,2,196,152,102,96,236,135,92,148,2,230,82,131,238,80,1,132,78,12,1,193,3,38,35,93,120,106,82,139,24,46,82,214,21,81,43,233,199,216,219,49,34,223,96,120,226,97,41,6,18,8,30,52,66,16,165,87,18,107,254,116,157,13,101,0,105,3,201,168,80,198,69,196,130,118,49,230,208,98,68,45,13,120,24,87,54,86,229,31,121,86,156,134,64,224,104,182,122,62,159,111,112,208,212,67,39,225, +37,246,154,151,44,18,172,62,248,84,180,227,189,118,155,197,98,95,184,46,158,165,0,44,203,104,151,147,122,251,97,163,240,153,88,62,253,72,254,129,4,13,201,129,41,5,97,83,44,115,8,102,229,54,45,132,200,74,98,170,197,234,69,183,205,253,240,192,236,21,151,206,42,232,165,250,100,56,6,85,197,65,108,80,92,149,203,240,69,247,15,2,210,192,123,248,255,239,63,38,75,243,241,68,159,97,10,13,45,106,246,228,22,88,251,144,222,102,72,45,227,53,55,196,204,9,174,164,26,184,107,134,199,58,194,13,69,138,23,224,21,82,44,77,116,101,130,232,224,78,201,63,131,245,251,28,202,99,219,208,36,247,144,36,185,245,159,78,79,0,99,211,185,9,60,238,146,203,214,127,181,90,195,134,207,135,240,39,91,144,92,159,126,159,61,187,25,73,191,237,9,251,152,84,216,250,90,90,72,134,154,1,93,217,142,52,195,148,124,119,117,32,194,62,68,75,75,192,52,177,19,72,72,194,56,115,18,117,14,162,188,60,112,29,242,73,9,135,232,205,120,206,193,112,173,18, +182,191,253,95,172,154,208,49,244,7,6,237,26,122,2,127,120,205,129,244,220,54,67,72,146,48,4,217,230,119,43,241,80,103,180,125,92,62,242,178,219,161,215,255,251,42,18,218,87,96,101,57,241,172,122,232,31,1,87,53,241,84,250,121,109,184,198,99,113,157,86,213,191,246,194,105,100,110,76,35,222,239,221,76,100,109,39,66,42,231,87,135,207,78,228,147,248,196,52,81,76,25,242,41,125,55,157,50,38,242,169,252,174,152,40,20,19,185,34,57,157,254,163,187,31,128,212,55,130,142,69,230,91,11,33,246,146,72,58,85,253,47,9,123,231,234,41,189,223,52,74,53,96,239,192,197,168,80,172,242,12,55,14,157,16,34,47,73,220,175,22,220,162,29,184,6,39,105,107,67,138,244,243,32,165,228,220,153,160,74,23,246,230,106,194,254,1,133,250,178,211,174,174,135,215,216,184,38,37,216,79,135,99,0,125,7,252,244,121,200,148,66,114,18,54,209,55,22,91,22,4,171,42,137,40,150,87,206,146,55,56,75,75,179,156,131,146,212,159,13,196,211,225,228,207,108, +171,216,141,12,14,227,206,11,61,75,23,200,86,214,212,195,114,24,246,55,39,144,174,117,18,50,72,11,85,13,251,85,64,244,73,80,100,98,40,102,246,65,190,241,13,118,29,163,45,213,189,39,117,65,109,179,0,34,229,94,155,242,255,34,184,62,224,255,14,124,55,46,223,95,158,83,206,91,2,4,93,66,62,107,181,169,63,171,26,224,109,150,53,161,16,83,28,166,6,177,72,139,233,22,31,198,192,66,30,179,147,46,6,34,236,126,166,41,12,68,235,154,149,13,143,3,148,236,32,241,90,64,96,217,225,60,90,12,74,225,0,226,33,175,33,119,16,226,87,82,211,255,73,196,18,154,210,221,170,140,164,148,150,117,170,44,62,230,243,191,217,107,178,24,69,24,252,0,140,103,146,232,86,151,120,122,229,83,206,177,35,60,31,57,192,14,241,204,27,161,55,70,181,32,168,156,92,58,192,201,33,251,49,88,202,202,252,253,64,32,247,55,64,116,130,62,164,111,176,93,223,229,199,145,111,61,52,44,254,203,133,235,101,95,41,124,54,158,123,217,161,1,121,97,141,77, +183,143,57,22,223,47,197,229,163,205,59,125,250,214,150,215,49,172,249,191,125,173,30,20,136,188,109,60,97,133,113,25,254,22,237,50,58,202,196,131,91,166,96,152,106,79,89,96,229,37,59,209,200,211,103,140,84,53,142,153,86,250,171,140,101,174,207,0,90,223,196,107,136,206,141,170,37,205,184,139,177,25,217,72,143,195,225,81,219,13,233,116,86,163,132,11,203,215,249,185,227,187,49,184,41,6,222,128,110,61,21,12,214,74,24,211,231,211,252,72,192,65,190,94,230,48,217,219,242,187,81,148,185,155,212,95,72,26,108,175,185,38,84,252,213,44,212,145,36,28,9,4,204,207,71,138,239,223,155,194,229,11,230,23,178,222,160,248,219,17,47,246,191,157,168,116,177,175,143,5,1,241,78,41,168,155,29,76,136,184,158,207,181,194,238,135,34,64,4,164,154,61,150,181,12,121,172,114,115,28,164,1,223,21,252,2,23,12,141,35,49,135,210,123,22,217,25,130,87,238,134,26,220,58,253,46,61,10,152,2,51,71,207,247,116,250,32,215,225,74,110,57,116,61,136,235, +31,250,197,196,210,226,203,69,41,150,61,163,114,171,217,159,219,111,218,107,236,198,219,101,99,48,204,85,109,190,94,88,75,81,151,54,76,244,47,186,18,7,34,18,15,145,24,128,24,137,177,31,179,28,54,51,138,177,47,23,71,15,145,6,78,49,185,132,111,99,38,188,104,210,20,36,178,231,31,202,27,54,186,180,74,171,218,191,114,202,242,67,10,81,202,58,234,85,5,18,142,137,108,166,214,13,17,71,57,197,107,243,44,222,81,219,78,28,185,31,7,18,16,126,237,180,144,17,187,120,241,70,64,19,3,30,50,73,68,191,107,199,114,219,66,192,98,213,59,64,207,231,118,234,169,233,253,14,136,223,18,223,83,207,57,26,251,131,168,213,63,89,126,148,58,214,123,166,163,52,232,54,216,191,33,220,139,71,204,243,75,43,21,221,151,99,220,95,20,93,20,152,141,223,177,144,236,214,26,54,53,166,33,71,214,109,211,197,227,135,74,243,168,35,114,145,166,86,227,220,6,95,155,215,235,57,184,12,119,62,203,171,165,169,46,207,147,176,153,2,51,4,206,162,59,123, +123,124,117,147,167,9,69,254,122,239,170,61,255,127,151,123,231,222,229,91,200,82,114,26,94,142,203,41,124,11,67,175,143,116,48,153,46,94,107,199,195,109,165,39,176,156,119,19,213,230,7,214,159,102,136,102,185,133,228,215,132,110,140,226,120,73,26,3,109,129,140,120,6,55,161,136,141,20,89,34,20,213,64,24,65,11,197,148,228,100,242,211,208,2,209,4,144,223,12,87,183,3,216,237,216,154,41,102,128,210,116,183,226,140,103,237,143,18,230,60,149,14,94,69,76,48,104,158,125,131,79,226,171,59,60,189,142,155,221,104,250,152,236,30,115,148,145,81,64,233,42,34,156,189,186,201,124,110,205,156,202,66,99,35,102,240,46,59,245,83,216,180,145,82,223,58,235,2,200,147,138,17,254,70,85,32,191,61,212,81,153,220,30,190,17,11,199,177,101,181,225,171,205,68,109,183,91,193,142,177,84,216,43,231,142,191,148,100,253,181,243,245,131,154,245,27,17,67,230,185,114,164,31,168,235,57,66,244,131,23,171,0,69,70,52,179,16,170,176,32,223,181,37,198,135,106, +104,158,226,119,149,63,61,206,123,111,33,69,55,171,223,242,42,174,247,135,124,236,12,2,194,238,182,179,35,212,71,151,201,141,177,59,127,76,28,202,43,162,203,195,34,241,110,4,79,124,129,67,108,34,145,166,119,154,215,57,0,116,102,128,210,65,169,203,124,154,253,149,61,152,180,98,128,217,253,250,110,252,240,235,124,165,120,44,247,151,249,178,107,57,125,95,159,233,235,146,57,175,158,243,238,231,13,190,217,158,167,207,238,51,124,147,13,29,234,246,104,187,6,24,47,199,160,24,148,184,89,133,165,105,88,187,224,186,224,225,18,139,115,44,45,5,16,207,20,241,174,183,130,220,111,182,30,17,147,220,209,177,104,181,99,151,72,15,90,114,164,180,245,217,110,145,185,64,121,184,231,198,176,96,30,66,78,177,108,44,83,142,175,166,76,172,26,64,36,90,192,80,89,137,149,168,96,133,46,162,16,216,132,155,50,218,121,14,12,198,157,88,212,174,155,255,89,89,145,110,104,17,179,128,36,82,155,151,90,100,96,206,7,95,127,19,72,5,144,207,243,193,164,130,145,96, +171,147,158,212,116,50,185,206,122,195,227,88,185,53,93,250,146,0,86,163,179,118,83,95,180,56,7,204,255,28,153,38,11,122,101,239,235,245,113,220,157,69,182,23,230,174,141,18,22,52,178,225,220,80,22,214,12,240,98,16,251,167,145,73,99,161,165,148,111,131,100,112,105,176,212,159,105,167,157,231,81,80,57,20,13,26,108,12,119,166,199,118,55,218,54,191,41,104,211,244,27,13,237,9,7,192,219,237,11,151,222,22,223,110,223,193,107,248,111,186,146,221,112,128,57,48,151,0,210,244,131,57,45,7,175,227,102,5,26,94,126,215,199,101,242,90,41,236,175,123,4,217,75,205,1,23,128,90,113,100,60,31,37,189,189,96,17,107,31,209,76,188,196,17,226,238,206,66,196,33,96,35,211,76,204,79,135,192,57,144,146,150,150,151,134,253,138,154,150,82,232,74,44,97,166,175,255,2,171,219,238,166,180,27,245,70,226,239,133,64,248,245,254,106,117,134,13,111,141,225,117,54,18,139,250,134,226,158,63,238,253,9,101,119,24,141,103,163,241,13,113,88,142,30,171,221, +111,38,162,38,97,57,202,65,114,250,41,76,92,107,93,130,86,215,8,57,79,199,175,36,2,71,238,126,244,73,75,246,94,30,46,108,122,241,16,108,139,130,102,223,76,107,23,241,94,122,151,151,158,89,120,67,36,152,93,126,127,63,247,129,248,252,116,216,45,131,195,248,182,243,6,21,140,197,233,79,140,169,110,20,22,240,0,99,90,152,254,31,9,231,176,108,77,183,109,209,87,95,182,109,219,123,217,182,109,219,54,239,247,159,91,200,106,22,50,70,239,179,181,200,25,35,60,63,85,8,41,31,184,88,168,202,63,176,4,255,91,39,10,19,69,20,190,58,238,150,46,117,138,135,199,141,212,103,148,167,97,225,127,137,144,207,131,0,15,16,99,246,36,29,126,112,54,144,113,18,23,41,148,33,125,199,153,181,60,132,254,146,55,128,121,222,5,72,247,75,172,159,74,144,237,59,14,231,57,10,84,126,107,184,126,252,154,67,239,84,113,186,169,45,43,187,215,110,51,154,109,74,139,213,102,244,42,173,86,29,209,171,214,154,213,106,187,93,241,183,220,73,94,235,78,250, +195,137,144,127,136,228,129,136,32,91,192,243,120,65,8,189,10,76,44,222,64,71,54,12,23,249,45,67,213,237,32,60,102,148,37,28,35,83,73,198,0,9,130,128,249,152,20,234,205,163,165,75,121,18,22,159,244,205,153,105,32,193,177,13,4,198,200,74,96,49,130,115,58,129,11,224,172,243,12,12,171,37,148,6,32,191,66,226,251,55,58,6,120,11,94,218,25,92,152,228,150,108,93,212,6,148,151,146,137,95,81,92,72,7,153,204,46,159,141,134,154,90,226,201,12,121,251,207,7,6,149,67,170,201,144,238,148,15,58,173,110,215,227,104,239,223,46,15,232,170,194,176,219,245,201,215,2,3,45,159,22,173,247,241,42,141,92,235,42,51,64,80,109,213,108,49,120,44,232,165,3,160,162,61,55,171,205,209,19,17,207,114,193,71,116,133,178,114,177,40,182,64,19,29,167,178,34,56,158,6,71,190,18,193,186,80,153,240,105,92,204,190,163,88,53,35,110,243,23,219,31,130,254,239,237,207,143,96,28,90,148,34,160,215,234,242,155,231,110,245,118,227,47,255,91,173, +208,251,87,191,129,136,71,240,19,70,58,66,104,39,128,127,108,218,237,233,244,104,112,120,221,220,44,14,66,28,50,123,146,41,10,242,222,240,248,149,141,201,222,255,76,253,240,154,127,8,193,57,63,131,159,157,197,199,198,192,68,134,158,147,134,242,67,133,187,153,38,72,251,163,0,179,132,156,248,207,50,33,93,73,182,228,167,2,224,217,207,20,204,92,251,85,29,254,102,203,79,99,211,152,92,73,155,221,241,180,220,142,117,205,161,89,115,73,246,87,30,169,132,212,82,143,207,36,237,152,38,158,83,97,255,124,126,133,190,1,62,5,77,52,40,23,55,137,207,73,187,218,52,183,124,124,179,115,173,158,36,106,90,74,21,121,239,7,110,122,239,207,17,119,126,220,45,96,232,199,143,215,84,193,205,12,158,216,214,78,194,79,66,171,181,234,99,86,187,13,145,154,140,117,93,82,91,20,130,132,94,66,67,96,80,200,132,84,190,31,44,125,74,212,148,132,162,52,44,235,50,36,251,192,158,128,107,225,178,207,57,174,78,126,188,223,144,4,61,11,254,158,140,30,145,18, +219,83,19,45,30,164,24,7,6,8,173,195,136,133,236,68,193,73,208,15,144,23,103,130,59,107,123,20,0,253,211,141,234,192,76,172,134,137,209,227,17,66,201,233,54,98,2,41,177,10,85,211,142,95,79,143,173,39,236,188,154,109,18,17,231,103,51,170,120,77,51,165,43,188,181,45,44,138,23,254,229,61,202,166,90,242,200,79,202,61,41,169,159,192,143,137,253,30,160,237,250,47,157,175,143,231,243,185,231,14,169,147,254,17,52,106,74,175,86,109,55,60,12,159,59,26,146,151,22,59,213,179,48,202,243,193,2,116,110,225,206,47,7,191,180,169,85,112,72,29,24,207,154,65,146,3,213,183,202,170,77,158,209,235,172,91,191,223,237,99,91,171,152,255,248,205,73,207,178,8,90,141,101,224,226,62,58,111,203,192,53,148,246,197,165,228,178,173,12,70,98,136,99,157,96,92,46,71,23,188,250,198,57,55,29,213,70,20,127,236,105,217,255,181,41,34,107,219,128,228,142,233,215,127,3,213,243,239,162,23,46,2,226,203,80,46,196,51,198,149,3,92,55,173,193,169, +154,39,159,57,237,19,68,77,71,83,70,187,157,83,106,169,72,156,28,86,147,106,81,183,85,215,121,94,94,55,160,13,103,179,189,193,197,246,235,125,124,17,168,124,108,106,205,83,27,111,91,149,29,57,110,114,67,149,221,137,114,35,196,127,2,253,28,154,55,197,25,231,164,35,169,42,86,149,97,6,74,122,90,1,234,13,140,17,14,67,79,16,65,179,104,0,108,32,59,98,93,100,205,104,25,50,173,107,212,45,79,237,28,239,111,114,243,125,239,188,95,196,185,172,181,188,203,15,242,189,67,124,253,62,242,231,127,234,134,126,126,213,60,118,14,67,198,73,97,49,98,148,20,6,135,136,103,43,1,123,127,133,132,248,222,236,106,127,180,189,248,210,234,114,191,127,174,248,222,242,160,110,253,171,57,253,24,11,133,133,10,115,17,17,31,142,140,190,121,51,1,23,129,138,14,123,51,19,13,13,61,51,119,18,72,100,163,194,224,105,63,56,206,151,9,253,114,101,218,39,201,139,58,252,204,53,246,45,57,214,249,240,190,252,27,214,223,211,115,115,240,123,95,31,195,109, +228,232,251,78,146,129,74,50,128,225,205,47,253,229,243,106,152,10,182,124,52,49,245,5,203,196,145,253,25,32,179,245,141,178,33,49,15,244,167,216,22,111,211,81,166,24,181,218,12,135,227,239,26,144,181,61,24,194,112,253,27,242,127,239,250,155,157,251,119,80,16,83,228,161,7,238,17,63,27,187,196,134,74,19,20,3,114,81,139,34,88,49,145,8,239,157,134,34,204,173,33,210,101,71,114,18,192,147,97,73,70,115,226,207,58,175,96,28,102,114,22,156,81,116,76,243,202,12,51,143,144,40,50,68,66,14,163,73,21,142,127,36,207,41,74,52,77,123,105,72,56,247,117,182,108,222,23,216,128,65,140,125,62,157,181,93,136,182,3,156,124,9,58,153,7,157,192,1,137,232,54,24,197,59,237,19,0,118,0,235,239,26,218,131,233,147,142,137,223,226,150,134,215,196,32,180,186,195,230,228,197,199,106,240,25,111,127,134,15,201,105,250,154,45,79,3,251,207,109,115,26,76,134,148,133,199,130,42,247,5,240,23,89,222,174,251,123,192,121,124,191,159,199,99,192,249, +188,94,175,223,87,255,246,59,185,140,94,55,124,127,190,94,106,126,47,107,67,227,69,35,110,204,125,225,85,42,157,100,222,193,148,27,21,164,41,1,6,30,228,164,108,245,168,224,13,80,16,139,197,125,18,208,84,100,64,23,127,80,109,80,79,25,45,149,236,186,103,1,46,6,216,137,55,206,185,188,133,63,48,29,62,132,194,28,197,249,51,95,192,77,195,184,87,106,169,121,208,146,243,109,59,210,146,81,24,22,164,9,36,154,94,72,100,55,113,26,164,94,83,154,207,73,241,169,129,9,200,172,248,83,235,80,156,68,141,17,63,241,124,138,183,124,123,111,240,87,144,165,131,120,235,246,160,239,163,202,8,198,213,42,54,14,252,183,52,22,191,222,105,122,147,83,45,210,58,58,154,69,223,236,250,219,137,62,64,98,157,143,150,54,163,212,181,252,252,103,115,81,41,137,139,75,139,35,33,237,238,38,54,171,4,143,127,160,61,154,10,73,74,238,81,6,246,200,46,128,183,65,234,23,101,39,146,81,230,204,223,188,156,6,192,177,41,228,210,52,19,249,88,153,238,58, +71,219,100,241,234,74,243,226,125,22,60,59,17,246,179,160,108,50,249,94,16,82,138,154,207,129,75,200,167,187,237,124,110,175,62,55,227,32,97,109,161,192,197,57,31,225,224,173,175,55,169,93,156,239,175,205,215,63,28,160,110,158,175,182,57,157,28,111,175,188,182,35,239,65,183,208,55,47,33,48,112,177,33,49,108,156,242,144,17,0,23,0,18,17,251,25,137,232,80,246,154,137,168,112,9,64,12,48,215,215,62,0,5,208,137,152,201,112,137,25,190,58,201,241,241,104,241,109,251,221,43,52,144,238,64,140,167,6,18,43,141,223,228,48,57,93,78,183,142,228,118,252,128,147,211,5,105,118,61,237,150,159,115,102,113,152,104,186,164,108,47,55,97,171,143,193,6,38,161,226,111,14,102,255,42,11,134,24,74,222,134,195,152,230,207,232,50,96,223,198,199,215,154,198,24,40,90,114,232,217,203,101,245,186,30,126,207,13,132,89,85,84,25,200,186,206,254,99,145,150,34,40,39,86,84,227,37,51,44,29,80,1,248,160,152,190,170,83,142,109,173,153,85,22,120,139, +100,8,15,82,8,146,130,18,98,155,21,82,140,145,255,52,69,186,136,54,121,22,197,169,90,145,0,12,138,249,34,171,161,230,26,227,134,137,227,55,72,54,85,188,253,156,0,233,167,199,65,22,143,27,229,251,3,72,124,32,189,0,188,71,217,17,48,183,246,195,53,64,96,102,64,160,19,7,63,45,82,245,223,163,111,54,33,246,0,47,187,15,36,97,128,149,244,63,183,225,226,181,182,14,78,16,226,157,239,27,120,158,0,180,92,94,229,147,197,232,131,240,1,120,64,243,215,38,159,181,71,72,162,157,194,96,135,249,117,110,255,166,62,223,255,228,5,98,33,242,128,252,61,28,143,74,197,210,249,122,252,136,212,105,85,4,101,46,192,4,2,97,21,197,254,245,249,235,89,86,144,121,30,15,24,177,75,26,68,231,223,189,164,163,116,104,219,172,14,149,42,170,213,161,16,56,192,47,180,130,76,133,24,86,66,39,47,40,98,64,106,45,169,128,124,161,165,4,251,1,90,44,212,179,116,240,238,243,43,35,59,19,189,140,189,121,24,55,34,56,94,250,44,155,242,80, +100,177,124,137,141,176,156,13,23,7,177,73,54,57,17,88,87,159,235,40,158,169,70,63,211,113,220,75,56,237,113,248,240,52,86,252,178,79,33,52,217,129,28,5,206,126,21,235,232,76,111,100,69,65,33,241,52,60,207,255,104,156,234,96,236,43,206,49,143,203,143,53,91,141,127,90,41,109,28,61,154,241,128,184,71,192,176,111,32,158,76,7,219,213,222,54,93,53,147,208,109,45,87,108,52,106,149,10,123,12,236,34,72,46,61,73,97,41,14,100,190,250,16,30,49,25,20,45,37,18,52,162,47,69,39,180,81,7,184,116,199,32,35,117,73,188,73,197,128,113,17,72,207,198,111,133,170,166,115,96,60,95,175,63,239,233,120,182,149,234,218,202,178,186,242,116,93,190,155,200,60,212,227,87,63,191,84,247,101,163,217,112,210,23,139,191,38,93,167,215,154,52,76,122,3,6,115,15,244,214,117,20,90,143,157,135,162,116,42,61,202,82,197,116,219,14,175,166,141,67,80,252,150,59,60,100,179,131,32,183,95,49,33,207,239,127,166,147,210,200,169,15,159,129,79,222, +220,59,119,235,164,122,45,126,15,2,140,211,35,93,154,125,95,213,74,148,110,33,82,37,194,196,69,117,52,160,64,170,66,136,179,1,5,128,243,19,152,1,210,56,82,48,155,43,53,119,143,153,145,191,184,184,93,93,182,116,50,140,219,164,83,202,122,88,151,78,227,86,37,179,175,2,17,191,139,33,202,8,148,111,255,205,221,211,236,63,145,227,164,84,35,114,253,167,96,4,105,65,252,250,87,89,246,103,89,51,118,215,169,235,83,217,121,2,203,237,222,91,125,173,28,29,181,101,88,91,95,97,155,14,213,180,147,238,139,174,97,220,172,188,88,168,78,198,254,193,92,117,154,117,230,118,203,125,105,182,93,205,150,163,77,110,249,32,25,91,14,118,85,196,125,183,182,57,248,83,55,203,77,7,174,104,157,169,28,28,164,220,32,166,132,243,160,144,82,162,128,197,165,127,24,28,173,59,184,209,36,132,92,18,240,40,171,101,192,162,117,36,156,18,24,180,35,130,74,75,213,165,101,141,112,223,244,110,107,4,3,80,131,159,171,90,34,48,140,224,32,158,60,14,197,94, +241,160,33,64,234,131,251,6,1,191,140,191,31,159,37,240,94,194,191,40,225,227,187,133,109,234,169,239,232,28,254,164,136,200,218,23,138,132,224,98,118,237,225,154,233,171,87,253,244,235,154,149,180,165,65,211,64,236,3,28,231,152,43,216,180,163,206,121,50,88,132,218,81,153,242,158,53,113,210,146,215,232,141,169,146,109,128,80,89,209,123,188,149,175,33,123,15,6,190,115,122,178,51,39,235,166,211,167,241,215,107,22,165,215,109,119,189,15,13,6,25,179,169,230,30,119,116,120,178,3,154,127,150,192,186,79,126,51,132,237,192,255,190,222,175,197,54,115,192,34,68,43,54,219,209,223,85,134,173,75,49,37,227,136,143,74,51,55,135,145,146,83,132,181,227,88,200,170,64,157,131,134,244,141,153,202,204,133,197,114,202,29,132,149,100,161,184,38,146,212,148,162,92,122,166,73,173,74,105,0,145,188,20,165,39,88,143,108,164,70,251,127,159,94,134,119,198,94,18,123,131,211,226,176,55,221,62,71,199,107,239,118,26,109,174,28,3,163,13,12,155,106,83,200,14,208, +248,19,82,224,176,100,141,82,99,197,231,196,62,29,42,145,72,233,133,247,253,238,144,156,167,254,123,94,122,191,209,63,92,115,94,79,236,238,247,243,190,124,15,155,73,175,130,238,116,196,217,60,0,46,127,48,141,17,65,18,1,149,21,235,160,58,12,24,134,207,159,44,148,12,68,138,170,152,26,220,60,20,38,65,16,14,206,217,188,220,171,74,8,57,175,74,57,227,168,46,238,199,104,107,117,98,169,206,224,182,235,125,239,191,237,25,188,15,231,126,247,223,70,4,235,187,118,15,222,110,71,247,89,125,190,131,214,45,64,129,68,104,99,137,0,210,52,157,107,197,134,164,65,178,68,74,212,90,146,20,137,226,44,157,29,160,69,144,210,192,25,79,137,18,169,1,130,115,210,86,149,151,22,190,117,234,238,132,174,1,92,161,147,65,91,215,69,211,56,216,169,110,8,236,128,136,31,50,96,156,93,1,253,156,125,118,2,233,119,218,102,197,198,233,29,222,45,5,4,202,96,1,226,241,197,37,110,117,42,27,246,239,235,95,98,184,219,120,111,117,5,249,183,207,33,44, +41,247,252,245,103,161,71,170,186,176,178,72,205,44,20,172,175,7,39,2,46,173,214,190,38,199,134,104,163,177,205,222,92,163,74,102,111,167,93,107,92,79,54,125,137,130,42,163,166,132,187,160,72,162,217,138,0,141,5,81,165,36,178,50,142,166,224,180,16,4,112,12,236,234,27,154,99,65,156,247,242,203,73,32,4,118,12,3,71,197,251,65,200,173,161,21,20,56,14,169,148,122,232,112,227,149,112,252,211,50,246,169,85,66,72,103,26,22,93,47,183,89,70,155,196,74,13,2,10,132,83,194,3,175,4,41,37,250,233,198,200,214,133,30,126,232,186,172,111,176,110,109,125,161,211,94,207,37,74,17,218,216,188,242,70,219,199,94,94,248,15,172,166,191,124,6,74,50,148,109,124,62,97,180,191,186,56,101,148,100,215,125,51,223,29,133,198,139,179,238,154,167,117,183,119,129,102,170,27,26,174,85,20,210,109,144,137,110,230,8,179,44,50,76,202,64,83,243,151,179,80,7,159,130,180,57,71,181,104,10,167,108,115,1,5,1,60,251,61,79,232,140,13,140,219,75, +77,46,252,174,209,230,96,80,104,248,38,153,204,200,53,219,141,189,222,247,1,251,221,165,105,205,47,208,246,235,87,216,212,103,79,46,241,154,9,90,212,227,242,165,227,230,112,246,12,46,159,201,201,141,242,73,11,220,80,172,73,230,18,168,154,37,14,65,84,130,136,36,48,196,138,179,146,149,67,27,207,161,191,74,239,143,194,40,204,109,75,232,153,82,230,31,149,87,30,169,255,232,224,22,106,238,225,145,13,42,202,206,232,171,47,71,141,112,127,92,187,26,95,218,70,155,243,217,73,118,53,184,174,79,243,233,254,121,188,127,239,229,230,183,130,179,213,104,176,7,220,121,172,151,45,90,42,98,67,59,48,164,23,109,41,39,78,121,249,101,131,47,20,111,117,185,221,14,179,245,190,207,106,70,33,58,72,232,123,3,40,192,184,83,3,223,131,149,72,157,71,216,118,63,239,7,255,93,142,207,203,205,134,221,250,251,56,35,121,187,158,136,137,33,195,152,96,125,184,48,211,2,130,6,100,140,97,129,230,32,148,89,212,200,73,217,15,137,172,20,150,162,182,101,36,80, +159,193,64,151,145,140,102,215,106,140,190,171,225,43,227,117,48,186,61,206,203,109,247,248,92,46,239,253,243,189,189,134,145,142,254,19,58,193,99,246,42,255,92,89,197,106,255,26,196,251,184,45,55,47,5,187,236,47,89,128,62,128,155,215,222,47,55,49,189,62,6,216,61,190,143,149,235,117,98,103,80,110,193,26,8,4,152,5,104,18,85,169,244,195,72,8,235,92,128,43,144,36,169,178,40,212,59,112,82,149,139,191,91,133,70,168,21,67,185,150,142,177,112,207,19,153,122,24,91,141,156,152,178,122,190,83,19,54,73,168,67,59,43,16,141,91,176,92,50,173,239,159,132,29,42,246,27,236,67,136,156,158,3,114,6,33,53,42,191,23,182,240,105,125,174,220,198,13,207,22,219,112,246,252,168,25,117,238,73,216,226,130,244,103,39,185,234,214,131,252,100,105,204,91,136,143,56,140,61,22,186,84,84,102,215,209,78,157,210,102,96,226,199,70,102,235,90,95,106,167,217,87,92,235,212,78,44,32,176,75,194,180,241,118,205,149,172,28,55,71,103,129,36,61,81,136, +66,36,205,12,148,239,25,92,5,1,211,221,138,136,119,152,18,13,14,32,34,193,5,107,76,33,5,36,228,12,198,24,37,167,130,50,217,79,70,31,159,73,68,100,140,249,128,116,211,113,199,194,222,12,131,175,206,156,113,42,31,126,123,202,53,195,78,237,164,83,193,64,153,152,98,149,139,82,67,81,159,242,211,122,47,210,238,217,1,149,118,213,8,242,231,163,133,197,16,78,151,223,243,54,124,207,54,23,165,43,105,215,189,236,245,150,141,181,228,163,204,142,92,152,30,246,35,197,199,246,204,51,119,47,242,185,115,179,47,110,181,52,55,219,62,201,141,46,90,97,67,156,97,26,136,104,149,97,53,123,13,33,102,230,134,50,95,36,8,187,88,80,84,152,166,88,83,116,145,160,93,20,136,59,119,70,208,218,111,30,133,20,81,208,155,216,23,155,191,58,117,185,92,240,152,94,46,175,221,106,183,221,143,231,251,222,239,131,154,229,39,64,252,6,8,223,173,57,104,253,75,138,198,85,250,29,223,211,210,238,252,79,32,193,97,184,218,52,195,251,227,108,215,107,242,9, +244,172,22,158,14,102,75,50,163,127,21,61,152,80,209,116,211,17,211,40,27,47,42,83,5,44,87,37,67,203,100,40,13,184,164,169,162,23,118,27,190,19,151,51,68,210,202,162,20,53,173,254,30,222,103,145,253,12,54,253,221,118,131,189,217,105,120,219,235,142,203,225,112,184,124,74,183,203,237,245,218,222,247,239,251,186,223,247,207,81,102,133,231,251,218,157,191,14,151,199,203,206,78,151,150,209,135,16,49,130,155,121,49,41,73,149,242,67,119,189,249,251,222,222,24,176,123,242,149,107,208,192,199,11,253,110,209,250,238,2,179,159,58,172,110,97,95,167,227,230,112,120,241,140,124,5,219,218,86,28,173,17,41,254,171,27,211,60,241,48,53,6,25,252,144,175,24,213,0,109,227,96,24,196,55,146,186,52,4,72,150,130,80,38,41,12,108,113,69,14,9,75,22,209,212,15,178,47,235,214,236,108,249,168,206,54,199,249,102,61,31,221,21,243,21,191,251,180,254,0,247,231,249,125,61,94,1,143,195,127,55,151,190,57,254,235,21,167,235,119,211,94,240,8,194,235, +187,8,192,202,237,253,210,129,48,92,23,20,163,77,224,95,64,191,255,173,176,225,223,90,63,96,235,157,62,187,99,237,58,179,209,224,18,19,22,164,64,139,4,206,212,158,68,150,254,235,7,117,124,83,88,38,143,205,82,109,17,155,110,224,125,155,54,107,98,116,134,249,65,216,224,8,209,222,79,63,63,237,42,53,252,164,3,208,107,174,24,132,120,153,148,101,29,250,99,69,5,12,205,17,182,120,127,147,187,31,181,103,149,242,128,99,152,225,63,4,12,104,23,64,62,175,7,208,181,195,139,71,126,94,91,253,214,96,14,233,216,158,166,253,83,108,168,173,88,87,207,32,183,188,109,156,182,243,4,41,84,43,61,186,74,254,142,210,151,43,213,208,116,174,219,105,129,151,151,216,224,188,52,212,29,57,213,165,101,95,36,1,173,41,24,34,204,241,192,81,147,90,117,148,168,73,66,4,195,204,149,168,13,10,83,38,20,40,56,118,38,208,159,64,212,165,52,95,118,252,39,14,210,160,25,76,211,223,26,187,220,172,119,213,207,71,54,22,19,165,73,51,166,209,47,107, +35,214,24,162,146,201,39,164,16,62,167,22,221,18,211,73,122,239,99,42,182,143,113,52,206,156,197,43,166,163,149,110,118,247,252,26,5,35,145,237,124,51,244,157,191,222,179,195,124,122,56,136,203,147,8,55,62,78,215,3,85,93,233,155,14,206,142,17,59,212,250,42,197,91,47,235,159,139,26,94,12,140,80,235,28,244,21,158,195,63,214,230,66,61,104,105,144,77,82,143,224,97,177,119,212,134,45,252,148,42,112,197,113,7,20,199,109,204,216,178,65,208,2,177,83,155,21,167,66,210,182,187,23,127,15,6,205,29,73,60,8,112,14,251,58,4,236,244,115,144,28,255,236,94,171,213,98,178,245,95,111,32,231,240,217,219,174,131,143,254,183,131,130,15,165,153,229,157,42,235,179,147,75,236,231,119,174,116,122,47,167,211,217,140,121,188,76,181,6,206,79,74,22,228,166,198,166,86,49,247,20,80,78,211,50,68,208,172,54,64,64,165,96,165,55,106,94,70,149,65,169,20,40,103,102,79,46,71,7,2,74,68,109,80,81,25,229,25,149,93,78,92,175,217,52,223, +88,136,47,227,191,130,246,58,92,191,195,109,127,36,94,56,53,223,247,119,200,28,224,185,157,239,123,222,30,74,122,254,247,123,25,125,245,190,207,25,255,251,254,134,131,74,33,177,72,154,146,73,122,64,240,55,211,78,48,217,218,145,87,143,247,216,247,216,171,117,27,234,183,116,203,224,11,53,11,190,143,78,129,177,99,222,125,61,239,227,252,125,60,222,175,153,162,199,103,41,140,93,125,245,160,121,32,53,207,86,132,70,18,254,205,136,190,225,31,223,174,60,51,231,122,70,144,42,16,28,239,38,191,97,60,41,170,10,81,242,177,52,47,231,211,250,121,131,193,117,221,234,74,46,182,234,216,227,92,109,132,237,81,115,174,212,220,132,59,238,234,112,117,235,116,237,99,171,90,111,214,43,222,119,197,103,113,57,189,46,171,215,233,245,219,157,30,190,227,245,220,63,160,26,156,107,251,188,191,59,114,13,128,3,90,244,91,159,119,216,235,9,51,253,246,218,109,247,162,92,188,215,55,123,77,244,155,220,174,6,74,159,72,57,52,231,40,40,250,225,170,162,65,125,118,174, +42,102,139,132,161,118,52,82,201,101,245,92,56,193,42,6,142,136,61,161,112,244,83,88,166,214,82,179,182,153,51,171,229,1,90,89,128,183,224,196,176,66,102,242,77,132,102,182,8,91,176,33,195,161,90,44,105,82,38,173,225,6,210,186,231,37,240,54,207,255,51,10,94,7,188,96,12,98,104,215,177,33,87,99,96,199,189,230,126,133,39,243,37,55,111,55,184,113,4,116,200,39,154,149,207,110,207,107,29,125,1,109,231,215,96,6,66,135,202,52,134,74,6,168,128,37,39,47,65,123,191,125,193,91,159,110,30,177,75,5,185,179,149,219,215,162,220,101,225,10,52,0,43,216,3,219,211,6,87,244,48,178,197,187,80,147,162,154,148,109,22,8,12,2,92,1,253,184,170,130,156,146,226,208,48,37,77,226,149,149,93,147,84,67,63,176,48,181,60,31,198,190,227,135,50,217,172,63,106,234,166,20,90,7,52,191,6,212,195,54,109,62,48,33,93,129,12,229,84,212,149,26,55,52,47,158,114,232,38,32,119,17,122,81,228,114,76,154,80,182,170,223,222,196,1,103, +245,217,57,28,175,91,216,117,202,249,145,239,3,107,87,94,124,94,187,153,241,19,248,187,183,51,165,89,90,96,129,152,60,43,195,74,7,61,37,184,167,234,7,96,123,185,27,35,76,123,155,186,170,221,37,129,61,67,128,163,10,23,81,210,47,220,140,155,81,25,110,0,96,16,160,0,113,205,44,94,192,154,154,162,50,143,142,68,65,229,251,70,45,109,104,64,35,48,104,235,16,52,191,52,136,27,130,16,245,128,208,6,92,22,218,190,157,141,70,187,211,234,117,91,62,199,209,238,250,30,94,247,43,254,187,145,195,111,62,15,223,253,122,28,62,122,193,50,239,110,151,167,143,51,145,90,227,11,245,62,111,156,235,167,145,233,189,251,227,142,159,67,114,0,125,247,244,187,202,103,5,234,111,23,42,161,177,27,46,183,48,94,59,104,178,147,174,173,110,235,166,245,230,10,166,159,61,154,50,162,64,142,162,128,32,68,161,154,60,121,91,43,250,63,169,150,134,192,23,82,5,73,253,39,238,196,15,147,162,65,52,5,233,12,20,136,154,237,221,99,92,246,215,218,247,121, +77,63,242,15,223,251,62,182,228,189,218,247,83,242,253,228,253,143,124,247,216,253,106,167,2,125,135,207,101,253,160,48,192,193,93,216,208,13,130,153,246,171,102,136,199,157,186,94,105,182,200,217,223,34,176,253,124,70,175,31,255,247,250,145,248,95,55,242,126,91,216,108,124,254,239,48,13,233,119,190,46,232,123,184,150,118,183,128,255,73,191,229,9,96,181,82,197,184,44,193,119,17,41,76,130,61,96,58,245,7,161,11,12,77,97,20,8,134,216,163,171,226,105,192,191,4,238,121,92,111,113,69,169,72,156,235,247,82,35,173,89,210,86,84,169,141,92,186,60,87,247,74,146,123,29,5,234,218,75,184,190,93,178,61,254,18,235,46,152,93,45,20,87,187,245,27,39,254,54,205,245,106,185,224,174,176,159,249,138,193,225,49,84,12,46,143,245,249,135,133,253,118,55,188,12,190,145,201,7,7,192,251,161,214,103,20,242,223,222,190,220,219,242,121,100,172,41,46,170,80,60,139,36,51,217,157,215,175,7,199,8,127,68,50,102,214,206,65,200,62,222,145,149,201,53,138, +182,109,66,0,150,164,3,10,136,139,151,164,26,142,128,124,78,121,10,30,203,186,18,218,122,74,43,46,188,211,220,229,179,126,97,203,187,121,108,98,187,121,171,155,50,177,100,165,229,254,19,173,111,174,79,246,191,242,203,175,241,75,216,64,63,190,161,191,182,78,143,75,121,138,147,242,116,15,247,154,244,243,27,42,142,253,57,184,124,99,200,43,100,117,13,159,98,199,159,171,12,230,169,152,86,77,170,44,17,46,216,158,243,18,222,226,199,103,81,118,181,18,248,205,74,134,131,43,35,86,44,191,129,6,66,61,205,91,193,39,82,111,247,236,183,105,24,189,69,237,56,122,75,56,237,52,9,197,196,9,126,165,0,193,201,134,198,238,226,216,194,144,166,26,98,7,235,202,46,251,50,162,12,163,156,23,151,57,244,32,33,133,113,72,166,122,90,101,109,172,96,224,26,11,166,30,216,17,166,126,40,253,132,200,104,23,125,234,90,49,174,89,222,40,72,24,206,205,83,211,9,98,62,19,73,131,109,152,245,48,240,47,96,248,238,182,247,5,134,228,93,131,231,0,111,148, +155,206,238,243,11,189,197,208,125,61,54,176,11,136,225,55,243,238,166,239,102,175,58,128,75,13,111,206,34,251,105,84,211,216,173,184,180,46,168,200,204,41,188,106,236,51,83,80,30,105,134,106,208,171,165,55,159,72,105,149,14,170,151,39,160,28,43,30,90,170,167,72,218,95,74,211,152,164,5,43,40,171,95,1,138,42,9,218,166,106,129,114,187,155,68,63,56,249,235,138,172,253,26,40,59,191,57,87,1,3,27,3,239,44,52,119,51,59,83,21,136,238,56,92,54,155,211,241,63,224,193,251,57,200,100,122,35,151,171,102,80,196,82,104,133,34,198,191,191,67,176,127,231,71,155,243,110,61,239,60,218,3,132,58,57,240,128,222,108,122,128,111,38,232,218,63,68,172,254,99,197,21,187,21,10,37,226,167,76,103,240,232,86,145,90,25,212,169,225,1,100,102,227,134,212,128,37,197,253,180,43,211,135,70,214,206,170,206,178,186,84,154,202,114,98,6,120,10,150,14,20,82,38,135,110,174,50,53,101,218,76,94,108,98,158,246,233,239,121,126,251,173,188,215,91,253, +222,57,59,103,103,251,253,14,208,28,53,250,251,205,54,161,213,39,68,22,38,198,203,185,170,179,156,82,140,202,241,80,201,91,203,43,206,178,141,177,185,54,110,231,253,238,129,254,196,108,252,239,67,127,231,108,128,230,174,171,199,123,245,222,16,201,126,255,188,139,237,247,199,118,54,147,227,119,57,93,111,205,59,112,50,51,182,108,97,37,178,54,40,185,161,174,9,51,91,209,81,202,142,128,225,83,62,114,248,143,68,10,143,18,4,73,94,56,145,160,132,213,131,28,137,184,205,135,97,226,73,234,240,44,41,181,206,51,218,136,167,65,178,213,31,78,29,106,234,118,119,17,251,17,255,198,86,231,116,151,155,103,98,192,3,9,135,144,113,250,153,163,197,206,234,94,225,103,224,195,219,104,231,97,99,166,192,252,238,100,100,159,128,128,157,1,7,194,201,129,189,179,13,121,231,110,169,94,139,205,239,221,185,20,76,209,111,73,4,162,11,93,181,38,162,183,206,152,193,80,134,225,247,43,225,63,195,95,35,12,213,6,84,200,99,21,121,90,130,136,195,251,230,15,118,117, +195,226,249,107,241,132,12,201,55,86,195,4,198,212,147,111,167,16,136,76,225,10,198,11,88,196,112,135,119,64,34,250,20,43,31,57,22,89,125,28,226,73,239,24,42,46,70,240,41,56,93,127,2,39,216,8,90,226,164,129,191,10,179,208,65,26,45,140,73,212,212,222,51,138,156,52,26,220,88,28,205,122,236,44,179,85,8,38,175,76,99,1,186,29,139,61,58,126,26,109,112,101,31,199,168,203,185,203,225,173,227,188,186,205,20,143,220,3,43,207,149,78,95,161,243,184,187,192,139,88,170,242,160,57,137,58,180,24,122,148,118,108,16,9,2,133,136,45,75,89,160,105,83,179,207,150,122,164,13,3,171,65,200,110,115,208,180,172,57,47,241,148,98,4,106,97,247,31,82,226,167,119,75,33,224,190,228,185,165,216,21,231,39,224,15,5,32,224,169,22,210,48,63,163,85,248,26,127,172,170,84,34,49,72,194,94,29,18,33,154,137,81,168,165,83,198,174,37,118,15,209,182,235,171,61,104,30,121,87,87,207,249,30,233,13,25,110,139,237,188,134,61,124,159,228,126, +177,247,118,141,61,155,221,62,88,242,201,144,168,50,62,48,78,57,108,75,5,91,125,206,14,177,95,20,9,226,22,54,160,49,25,252,136,166,87,10,20,4,40,11,191,4,161,128,133,1,96,209,200,111,137,236,101,132,32,57,25,176,47,213,52,109,29,179,44,158,88,90,150,117,29,116,63,53,180,149,99,31,77,205,251,120,16,227,28,42,22,124,46,222,85,62,58,20,206,206,78,175,94,15,117,59,46,187,215,227,141,216,29,158,127,205,126,243,29,143,223,206,37,133,111,217,242,68,159,247,254,179,190,186,31,120,247,247,228,225,31,147,111,71,175,151,119,191,111,80,24,102,11,241,1,172,109,239,227,38,60,239,175,239,237,254,198,94,222,187,241,123,116,147,253,188,94,47,7,255,14,212,204,148,234,154,250,0,52,147,219,233,217,57,19,24,30,251,104,39,211,223,251,9,74,78,70,174,244,31,133,53,45,85,13,53,180,149,75,82,33,94,224,173,145,20,181,36,54,107,192,138,135,140,134,119,253,73,209,155,196,73,109,50,252,139,201,247,85,218,85,118,223,175,220,189, +91,86,106,191,31,72,243,247,202,226,227,23,116,205,245,130,197,66,133,122,101,108,119,77,184,137,1,82,26,245,17,139,141,100,124,122,99,78,63,2,68,139,142,119,235,125,239,171,254,222,174,204,73,239,165,222,215,185,122,188,190,239,247,57,237,125,51,157,145,139,174,223,122,219,109,159,199,245,207,167,237,222,102,171,126,202,117,8,194,134,57,48,116,28,236,68,60,241,48,33,25,191,152,222,151,216,106,60,137,8,208,91,131,8,55,37,136,43,18,5,2,169,71,111,165,146,82,136,105,49,77,139,121,46,112,131,97,124,196,194,81,45,214,45,171,144,154,199,0,93,66,243,249,51,100,242,177,88,133,98,198,58,128,253,201,50,255,18,232,64,0,132,65,51,7,217,175,58,141,131,56,140,155,1,228,154,4,108,63,250,162,164,186,123,79,79,255,187,111,126,95,245,9,73,35,66,12,170,104,42,94,178,198,203,142,58,23,107,139,48,195,220,132,217,46,233,107,197,27,228,226,136,228,168,200,234,252,31,139,93,211,27,144,36,178,194,124,31,78,156,221,254,159,236,70,144, +72,37,250,1,8,253,133,12,73,121,184,240,47,15,204,3,234,242,53,155,111,118,23,15,9,27,74,2,226,21,216,32,46,85,2,240,19,67,135,41,196,156,184,69,203,118,1,216,37,46,255,146,216,106,41,62,112,91,88,51,24,248,148,158,75,77,221,132,55,87,51,150,42,237,121,136,183,195,169,5,148,250,217,106,91,206,229,236,173,182,115,216,69,26,187,245,179,213,232,106,115,211,135,167,160,233,240,9,31,100,162,192,39,131,133,22,166,151,254,20,179,100,213,135,218,154,48,104,175,174,238,72,13,176,157,85,108,97,47,41,213,248,203,23,33,91,88,144,106,121,214,1,254,175,90,86,85,237,40,4,59,164,83,211,242,127,25,118,254,164,104,9,53,91,209,148,146,255,162,215,38,75,233,171,94,85,19,120,15,98,207,156,61,29,147,238,44,161,181,184,68,14,233,5,72,13,67,36,126,185,68,41,68,28,96,47,236,95,144,67,29,246,180,167,72,219,249,254,240,205,119,112,189,187,183,48,240,35,54,119,5,221,221,66,58,62,202,164,227,53,44,222,183,229,240,53, +92,43,207,161,241,182,72,91,25,143,91,123,184,110,167,160,41,75,101,93,210,153,181,19,148,182,220,176,104,227,243,75,86,109,88,10,109,218,105,107,9,132,65,33,236,84,58,72,54,228,27,148,70,221,241,167,243,219,134,88,243,240,79,5,85,31,65,253,186,200,13,89,47,212,52,113,84,234,108,167,229,170,202,69,130,104,203,99,16,195,117,151,159,173,32,224,238,172,190,251,70,89,243,140,140,92,249,85,42,216,140,118,227,249,133,58,98,211,167,180,242,133,212,240,146,171,70,15,221,118,219,238,15,196,234,216,63,167,211,166,229,127,234,9,182,222,241,4,122,185,108,190,30,80,14,188,202,125,207,251,233,248,241,85,70,174,20,220,70,7,222,118,217,45,31,175,19,238,174,57,221,63,31,73,215,172,54,153,90,29,26,29,242,55,108,73,56,129,92,187,56,90,240,25,4,8,9,169,163,24,27,117,100,207,70,94,144,168,209,68,40,198,5,41,142,131,250,113,204,242,95,196,138,56,74,106,32,233,47,228,183,154,42,201,86,246,243,60,107,186,155,12,191,55,109,123, +159,69,237,120,182,247,17,168,236,247,164,135,210,111,121,182,43,254,89,250,8,69,9,237,83,75,38,8,17,99,101,37,121,103,182,47,67,164,75,237,3,147,197,159,213,12,255,186,237,190,158,159,198,125,152,237,126,64,95,182,3,85,231,108,250,0,232,249,253,125,246,219,101,132,221,51,177,225,100,180,75,240,3,139,77,236,18,218,213,59,173,94,167,21,61,246,152,217,224,49,58,187,21,134,7,242,212,186,151,63,77,74,243,97,24,122,102,20,164,22,99,36,202,231,20,211,126,105,65,10,90,119,119,19,66,108,219,72,235,248,153,198,64,37,158,178,50,198,199,185,139,76,238,27,255,238,191,238,224,214,80,134,93,218,49,65,41,150,29,117,234,25,55,170,212,255,211,81,0,186,68,154,60,132,185,136,97,26,228,13,78,24,186,216,211,104,179,129,102,70,123,89,150,105,106,243,217,82,149,27,179,55,111,79,167,165,176,161,44,185,119,238,117,251,223,143,161,166,55,136,161,142,64,176,61,41,201,169,12,49,168,33,36,216,46,19,10,161,201,18,92,226,166,247,36,103, +136,74,193,150,141,249,8,40,169,178,2,106,155,160,212,146,200,8,207,116,179,213,93,60,34,1,11,98,194,9,6,198,182,241,167,172,147,220,229,187,112,136,169,222,239,109,218,199,125,64,31,2,88,238,158,32,117,41,241,120,11,204,98,178,64,137,7,8,192,225,47,196,88,99,14,93,8,118,153,43,118,14,40,197,30,108,76,223,224,141,46,197,206,191,166,172,189,2,216,172,218,152,103,159,171,98,151,113,53,173,213,89,226,60,175,47,177,39,48,34,49,117,167,210,53,0,184,145,208,216,58,139,243,230,181,33,170,173,42,105,51,233,168,107,41,73,169,225,45,203,208,78,139,234,197,35,49,89,184,106,69,46,131,41,72,64,86,143,117,89,185,190,214,137,250,105,123,140,88,201,2,229,136,65,139,193,51,73,253,80,2,20,56,177,238,214,59,123,155,115,122,130,53,3,181,164,208,61,205,161,48,77,116,53,159,161,120,199,129,82,169,17,168,239,44,38,177,35,50,192,36,139,165,98,204,255,1,36,92,252,68,253,198,92,208,1,173,219,182,223,188,212,172,198,166,239, +104,26,62,208,215,118,125,234,158,175,236,175,227,227,109,249,23,79,13,199,61,208,198,57,98,179,89,31,159,223,169,88,194,54,126,167,84,214,133,4,165,173,213,165,137,134,250,146,213,26,151,76,42,178,111,65,169,43,14,8,55,143,158,35,162,169,181,145,209,24,255,227,119,136,166,96,243,119,243,0,60,77,219,180,78,93,205,176,4,17,58,172,235,114,39,58,27,184,27,68,98,129,228,8,105,91,76,123,9,132,16,30,35,208,0,100,110,218,223,119,27,157,77,175,221,106,55,90,93,117,175,238,107,120,188,110,180,221,238,242,124,220,255,240,109,122,28,124,42,234,120,174,135,34,249,128,171,114,76,123,135,216,159,15,250,225,56,224,18,64,136,168,160,111,250,23,56,220,126,203,195,233,248,59,46,160,179,11,5,56,192,192,55,61,61,125,13,51,112,159,159,95,172,210,93,193,169,4,172,51,150,21,36,188,99,120,128,106,25,170,64,33,201,253,195,244,114,77,202,208,211,208,210,58,133,225,161,138,15,79,26,108,134,182,55,165,65,29,204,86,81,181,188,39,231,198, +164,191,213,182,122,189,221,127,124,220,247,45,254,227,129,120,188,207,57,250,233,31,37,94,95,118,7,232,86,230,103,202,212,46,103,168,154,22,199,179,0,17,211,249,206,164,191,55,209,126,251,220,126,32,218,221,9,235,222,31,215,11,35,71,215,119,121,109,159,140,195,233,110,249,156,141,101,205,209,110,182,153,42,199,38,47,85,10,119,107,31,208,155,155,27,204,204,217,86,173,89,107,213,154,225,223,51,59,45,230,212,49,211,153,182,245,177,90,2,165,154,148,48,219,43,82,74,190,208,52,147,77,1,182,44,226,70,152,36,119,148,126,248,195,232,73,234,68,37,168,35,188,253,196,209,41,174,166,138,197,165,84,251,217,136,107,228,202,7,163,18,240,192,20,60,163,18,158,88,156,139,77,145,73,68,166,58,224,156,248,76,156,161,220,213,66,63,240,14,202,19,205,100,234,31,196,204,124,183,208,137,24,46,110,243,114,138,115,51,95,17,123,223,114,255,31,56,1,68,42,91,28,34,225,253,88,140,203,175,33,211,169,64,6,111,242,166,119,127,66,31,135,9,121,144,82, +255,205,199,236,18,173,88,44,0,164,19,190,140,224,53,68,49,128,24,15,49,23,0,1,136,237,192,233,194,37,89,144,97,220,169,89,43,153,16,101,208,123,11,247,6,45,250,42,62,177,172,145,12,136,89,154,77,250,72,20,18,115,140,119,9,179,99,189,127,11,137,187,79,246,78,110,193,184,45,5,249,168,230,38,57,7,7,253,38,112,83,69,72,152,182,109,32,211,71,40,149,136,202,50,11,57,83,39,94,61,242,17,253,63,195,177,41,152,217,110,245,92,252,167,125,12,254,36,86,106,207,155,105,70,22,245,249,219,184,146,105,19,174,123,82,162,164,126,211,162,108,101,103,71,242,248,82,138,31,130,39,233,114,185,218,85,18,141,56,46,107,21,1,11,215,63,103,237,38,119,70,36,20,213,253,104,113,72,34,51,18,88,198,44,147,231,91,40,122,121,151,83,125,219,226,67,192,60,46,81,9,31,107,103,33,155,112,58,135,152,192,134,17,157,44,197,70,228,4,198,207,199,54,137,216,241,11,207,168,206,251,229,69,152,248,165,24,130,126,218,213,249,143,244,178,1, +170,161,67,213,108,239,55,248,190,41,6,135,157,189,233,94,124,85,28,39,129,235,182,130,84,78,160,133,94,130,56,149,121,10,74,67,40,76,214,112,177,165,201,23,233,88,226,74,19,39,38,101,216,234,177,178,228,160,114,138,16,202,219,44,229,113,45,81,151,118,142,90,69,246,10,193,92,42,102,212,13,3,165,84,212,70,38,216,94,107,15,48,16,8,98,74,184,188,179,29,223,225,50,97,162,220,239,4,195,36,200,46,90,223,156,3,4,0,196,192,192,66,228,195,220,200,204,201,76,165,196,218,203,211,102,239,53,91,205,118,181,93,205,57,63,203,238,116,194,73,139,225,187,160,250,27,118,11,230,247,112,34,247,11,103,145,31,223,223,182,127,63,223,231,125,58,216,127,142,56,9,236,131,110,201,61,167,22,119,14,87,207,235,156,227,239,238,253,51,90,120,153,215,39,127,235,83,98,27,230,186,59,233,24,193,90,247,210,98,83,58,211,53,173,74,187,158,74,193,84,83,216,66,152,111,202,201,75,210,193,17,231,38,165,178,12,25,113,89,220,123,41,10,222,158,127, +151,102,171,43,152,64,44,247,7,251,227,243,145,92,224,39,52,167,53,48,42,95,136,250,240,155,82,103,6,248,159,221,241,24,213,235,46,94,122,234,28,15,140,27,154,29,250,216,106,16,201,58,16,52,55,115,249,219,110,199,115,159,18,165,176,150,192,21,227,226,99,244,91,11,78,207,157,46,158,192,92,186,6,96,58,54,195,185,84,147,88,50,180,74,193,64,193,54,108,102,222,8,231,81,188,8,64,28,23,89,161,180,168,214,248,33,18,36,43,9,83,207,228,223,151,173,114,141,75,73,51,10,189,168,52,253,181,69,80,156,114,205,43,73,53,0,149,130,146,83,114,102,217,112,68,116,150,132,148,197,123,70,229,244,201,59,88,84,11,171,216,218,18,34,105,203,33,78,165,185,56,21,113,137,142,187,220,166,144,80,34,127,10,68,132,253,77,16,161,113,34,84,229,103,43,205,34,111,249,235,254,194,134,160,221,227,249,125,252,59,112,217,3,183,224,9,25,136,252,232,48,44,15,198,71,250,175,96,162,20,176,152,6,117,177,98,209,23,4,246,201,7,136,74,194,16, +4,143,98,152,29,97,109,194,82,24,81,111,33,97,97,27,197,41,81,13,71,160,229,51,165,72,141,35,67,15,163,53,106,41,32,35,212,19,146,64,109,23,73,32,50,111,12,140,146,76,72,74,52,87,100,69,151,140,131,118,152,65,78,206,146,221,144,224,228,27,193,230,200,100,166,17,108,238,148,232,152,76,74,36,157,9,71,2,34,38,113,88,11,17,82,137,202,80,216,247,136,50,82,110,128,222,245,58,173,164,37,74,164,160,126,9,17,16,143,193,101,247,90,64,193,44,198,212,132,39,106,178,4,173,80,192,104,238,230,165,4,200,35,39,102,100,170,42,26,164,138,164,182,164,138,218,158,180,130,196,17,58,167,33,43,102,122,252,68,24,227,6,166,44,40,195,248,235,227,28,163,57,52,147,42,81,206,193,44,199,242,24,117,105,54,13,212,35,128,69,97,35,133,249,8,48,40,80,117,156,85,163,18,16,217,162,169,128,158,187,10,16,174,144,157,204,171,89,179,83,33,10,7,55,184,255,14,143,198,108,181,12,64,142,99,142,198,201,144,58,166,24,155,190,195,106, +211,131,169,99,81,72,191,116,150,105,181,154,138,233,137,172,162,54,202,83,126,140,214,122,235,83,195,64,216,107,42,242,195,26,148,168,194,196,137,6,75,247,5,174,177,64,40,210,28,185,108,21,25,13,229,136,210,65,36,95,209,238,77,31,88,122,9,173,177,113,221,58,175,83,192,8,148,13,164,164,217,221,194,4,6,128,87,75,9,70,79,174,122,172,64,49,68,216,31,3,16,128,16,247,31,247,26,13,117,231,159,60,251,236,218,211,102,227,173,109,125,118,121,190,246,189,17,46,207,172,92,35,184,75,94,131,211,111,110,185,190,203,245,189,207,190,239,125,177,70,230,44,215,245,64,219,216,103,187,236,146,203,6,175,225,95,32,186,77,160,7,136,215,65,30,127,199,9,88,241,12,29,64,64,74,91,173,207,88,41,33,95,189,172,174,177,42,195,206,193,139,219,237,182,124,133,173,19,205,52,203,217,39,14,77,42,127,25,173,156,74,253,101,219,242,31,13,22,227,121,112,32,63,23,165,133,130,51,174,164,186,251,233,14,89,245,229,210,243,214,83,76,22,119,213,233, +116,14,125,247,235,124,178,38,54,81,17,218,255,61,229,220,250,115,145,201,217,118,146,159,195,249,5,244,62,113,123,11,252,99,107,82,3,10,186,129,130,130,4,78,140,213,109,108,108,30,175,219,188,63,91,94,35,168,19,129,43,224,122,219,80,247,221,246,185,59,58,190,206,33,68,20,49,52,200,140,77,101,41,202,192,56,87,67,154,40,162,118,218,169,66,71,41,172,30,31,117,199,200,64,101,170,203,181,110,91,148,138,137,153,146,138,210,137,95,24,158,116,61,157,163,6,203,190,36,30,218,6,164,194,127,18,160,7,246,230,150,120,95,176,89,109,47,250,39,246,180,59,224,86,143,98,185,101,98,102,185,143,154,182,124,24,147,146,132,163,238,228,172,128,99,72,196,136,67,37,184,148,82,163,86,57,42,18,209,36,242,195,4,37,5,170,15,173,80,1,114,56,70,200,253,1,205,252,243,7,109,87,233,190,201,203,219,251,198,154,223,247,20,168,180,43,231,165,229,254,207,96,163,120,48,16,104,40,80,9,155,132,170,67,34,23,23,200,68,243,67,21,86,75,212,22, +222,234,120,100,41,94,53,229,94,182,198,175,79,212,169,198,242,232,141,211,244,86,66,145,172,61,89,12,81,180,186,242,103,79,66,149,212,225,133,21,40,46,135,90,214,234,8,168,151,162,108,82,147,62,251,83,1,42,119,77,216,63,152,224,180,198,184,85,202,85,24,17,119,131,144,67,222,64,69,212,114,235,40,100,27,11,228,61,139,17,55,67,140,73,210,132,14,211,24,202,194,204,152,188,76,164,197,204,133,172,101,218,140,173,208,9,187,90,215,65,169,205,58,210,154,165,53,235,14,108,165,195,28,83,3,234,141,136,85,204,209,80,13,138,38,252,229,255,128,107,223,119,5,16,196,133,101,65,139,118,33,106,77,84,74,13,29,60,195,186,53,52,91,206,189,102,243,140,134,246,230,165,101,201,127,227,163,214,87,56,248,42,36,159,237,184,96,52,130,65,152,139,3,0,52,2,42,18,98,42,93,208,72,211,131,41,161,215,225,155,7,33,140,189,67,28,74,161,241,208,146,77,165,48,182,244,232,216,23,8,149,138,163,225,179,59,113,215,189,232,166,13,132,245,12,160, +151,175,133,96,15,186,151,254,229,246,52,156,42,61,239,102,189,225,222,172,57,103,151,45,255,38,189,166,70,214,248,82,27,109,99,108,68,32,100,77,154,42,91,63,48,38,208,160,221,84,212,172,57,116,7,125,38,242,182,148,32,156,114,91,253,1,189,3,105,229,190,27,90,45,220,21,75,23,220,0,86,120,144,65,48,20,100,16,10,48,104,148,85,164,58,160,83,79,80,156,171,225,252,235,83,223,149,16,22,105,222,179,164,109,191,119,146,53,31,246,18,230,153,91,159,249,213,229,252,226,118,109,37,96,166,68,21,206,224,221,60,127,113,134,129,11,107,99,165,87,239,120,219,110,247,160,238,249,125,247,167,37,123,127,197,174,225,136,151,89,240,85,58,143,95,136,240,26,125,191,206,175,101,235,183,252,222,222,215,21,118,124,60,221,143,224,189,12,114,99,11,2,156,118,122,199,227,129,33,127,172,9,198,9,164,214,221,250,191,170,199,112,84,61,46,11,223,215,60,213,85,41,120,11,224,42,69,149,178,11,139,218,33,43,12,152,78,107,107,91,75,253,59,44,16,242, +185,59,45,220,72,56,42,240,9,41,52,111,47,15,46,242,229,180,249,159,223,231,249,112,186,153,203,227,251,170,68,222,93,213,197,223,251,51,157,177,197,236,216,190,35,95,233,91,184,222,224,225,45,162,211,96,72,65,83,116,214,75,188,102,122,106,110,191,122,29,167,203,233,113,51,126,183,247,197,112,59,138,61,222,147,145,161,117,42,182,53,146,101,234,169,160,148,148,163,242,140,10,213,75,115,17,54,58,96,3,132,162,66,110,112,198,149,233,73,74,57,161,176,216,56,213,244,234,162,169,50,50,11,106,80,89,226,98,156,158,161,233,164,196,251,24,72,7,98,13,66,46,232,255,128,177,139,62,186,87,144,123,138,110,68,22,89,97,248,80,9,245,179,249,64,78,64,54,12,142,101,194,9,65,8,223,27,29,16,48,124,34,105,39,228,102,167,250,4,165,130,244,241,119,129,146,12,174,199,112,220,175,57,103,72,166,190,144,167,18,217,189,125,149,8,28,122,104,237,122,158,231,225,31,80,34,123,105,122,20,14,149,161,160,225,99,94,145,151,248,207,46,33,251,80,64, +91,78,73,14,92,204,199,73,234,52,44,227,206,130,148,112,212,122,11,99,185,119,38,170,151,38,255,166,29,148,158,84,141,30,79,94,139,70,119,152,66,87,86,143,24,149,68,177,228,16,85,186,153,234,239,109,137,22,52,98,41,75,123,8,198,137,33,20,166,40,8,20,214,236,140,141,168,178,1,9,88,8,64,33,103,198,89,193,106,161,12,214,164,108,100,165,140,182,84,13,148,86,218,118,228,16,179,210,198,49,109,221,210,141,101,72,57,59,113,110,163,225,120,121,51,161,114,64,11,88,138,74,92,14,99,197,106,69,33,138,8,22,65,26,225,93,8,172,142,105,72,13,43,57,10,43,141,72,201,240,247,243,189,122,223,111,168,151,223,114,180,182,127,205,95,221,234,228,43,166,157,140,215,51,181,227,188,66,123,193,207,255,74,148,22,83,196,252,222,214,15,223,32,149,249,89,28,231,30,122,158,235,217,207,198,110,24,52,119,254,205,229,110,130,178,112,66,74,249,228,83,142,15,89,247,202,69,124,214,118,98,198,180,204,33,105,173,215,88,152,179,75,245,98,74,142, +26,218,139,134,24,209,153,222,28,50,153,221,59,69,214,155,54,72,253,244,205,12,216,197,206,218,59,3,113,86,0,110,159,117,174,98,129,36,80,228,107,93,228,173,236,220,18,98,105,88,29,36,45,140,161,218,212,12,158,152,203,232,215,245,127,67,236,102,233,87,20,223,84,28,12,199,91,3,160,133,145,114,12,147,219,32,80,154,164,146,173,246,199,249,115,188,97,147,100,0,215,59,253,40,84,177,89,131,165,212,79,148,77,234,86,166,202,17,60,240,32,135,50,112,103,3,45,197,34,212,144,180,165,151,194,171,237,67,40,238,255,201,16,138,179,44,54,127,2,87,240,238,87,222,91,96,159,226,194,226,62,57,89,31,6,169,245,231,189,28,109,167,229,215,119,187,160,186,237,41,122,55,253,252,222,239,95,168,112,186,237,173,93,97,203,230,231,191,232,248,173,107,150,179,101,245,194,49,81,100,205,238,172,57,236,246,154,229,237,184,189,133,118,189,197,203,66,249,74,41,68,70,86,88,8,5,126,228,241,49,171,185,159,236,93,113,58,187,192,48,254,104,209,148,244,199, +242,57,52,116,0,71,108,96,5,101,7,38,2,129,160,164,233,8,171,70,64,111,157,247,44,102,221,47,208,215,124,250,30,190,135,232,237,231,163,66,206,225,223,97,147,218,140,212,15,91,213,219,227,34,68,101,136,150,10,16,176,160,69,196,40,249,65,55,248,112,182,171,197,142,205,106,242,83,237,127,251,112,45,194,78,118,183,102,232,4,73,133,31,39,125,19,235,58,33,118,84,120,230,236,96,104,184,136,208,244,122,34,17,177,201,90,205,16,29,171,255,48,49,183,51,242,56,149,82,148,85,72,115,92,246,248,150,85,196,134,146,88,103,26,152,74,8,161,141,126,82,15,183,113,170,96,50,11,78,131,76,89,236,172,106,9,2,222,107,245,132,32,224,14,82,229,4,215,156,42,165,36,175,69,51,29,38,117,127,66,106,222,129,71,228,211,4,228,31,66,89,41,26,231,178,140,76,254,247,56,48,213,136,55,113,38,172,115,191,114,68,206,93,49,133,102,201,141,238,28,153,99,127,200,161,239,36,107,59,14,21,152,9,175,114,147,109,110,251,32,118,177,234,117,78,100, +2,135,206,71,199,112,109,148,157,114,2,2,117,154,214,62,196,137,85,224,164,78,228,92,34,3,201,125,20,84,153,146,205,180,185,242,224,92,50,244,251,131,145,173,8,28,230,29,63,91,20,100,198,19,221,192,192,34,146,49,229,147,113,42,202,102,0,148,141,1,25,10,155,101,44,196,52,58,97,238,20,56,216,201,124,76,35,70,129,76,89,83,143,171,51,220,240,91,130,195,86,104,14,97,36,180,79,149,241,244,168,59,117,140,134,33,245,96,176,183,49,254,51,172,209,90,115,126,24,102,171,173,133,56,90,105,41,222,201,217,66,166,220,146,66,102,255,218,135,122,135,200,13,170,42,33,242,4,213,146,197,138,189,142,240,115,148,21,75,138,155,49,169,74,139,163,12,199,142,124,217,198,243,79,224,202,125,209,207,181,111,92,37,253,180,137,111,159,186,40,8,51,216,69,82,13,146,74,223,105,165,62,241,169,240,23,203,94,179,66,248,141,150,191,81,243,135,152,53,125,101,150,175,252,102,251,170,172,28,43,189,39,105,53,96,41,136,240,169,12,105,190,25,186,222,233, +184,63,180,46,172,159,132,24,191,197,142,107,201,213,112,97,106,63,218,85,217,142,75,60,29,179,243,88,4,81,164,9,26,70,16,207,101,246,223,108,130,133,18,39,86,129,213,209,229,89,127,247,54,80,98,198,125,254,252,32,131,192,234,5,200,149,24,9,10,168,146,173,156,4,32,2,130,78,142,17,4,105,184,124,41,188,184,87,120,129,7,128,73,217,214,133,135,12,69,68,186,119,17,84,251,74,149,8,122,109,200,215,15,135,69,185,242,16,146,28,254,69,174,136,32,84,0,139,161,55,54,136,107,214,218,230,47,0,217,12,102,10,172,71,110,107,202,102,124,89,191,119,207,243,115,29,238,158,151,239,43,211,138,192,137,145,141,195,5,183,233,111,186,222,97,11,10,180,221,128,14,38,74,243,243,196,250,43,72,183,189,233,249,183,172,228,191,229,46,209,81,160,55,143,11,11,219,57,213,198,227,112,153,15,238,118,51,90,71,123,107,21,187,234,177,170,109,225,41,176,190,171,72,116,90,165,200,172,65,110,162,90,14,28,54,219,253,25,169,187,137,157,92,68,94,34, +73,243,166,124,173,197,232,179,24,137,94,179,209,115,252,129,169,114,254,239,254,177,248,65,20,116,55,188,142,6,184,225,221,96,228,70,1,181,154,144,136,119,24,100,39,204,71,120,9,61,238,247,214,102,42,224,209,169,231,41,181,22,205,109,190,202,68,129,80,217,131,74,41,93,122,185,153,1,132,138,28,248,113,137,59,134,142,143,33,32,235,29,8,113,12,91,153,10,66,92,101,129,90,140,118,174,124,112,39,73,105,72,37,66,158,138,72,186,217,102,5,217,222,17,60,86,203,120,81,44,121,93,170,105,205,39,121,59,41,45,194,169,177,26,94,161,169,52,83,124,22,36,160,149,182,14,40,74,90,117,179,225,209,81,198,68,18,81,243,27,24,84,8,4,109,127,12,11,32,16,177,41,104,249,165,237,79,185,198,230,190,67,235,51,19,167,53,80,58,66,161,189,202,30,170,57,44,104,39,74,222,87,50,203,228,255,75,22,245,35,107,164,68,80,120,243,87,104,211,54,147,127,118,170,236,166,207,67,247,148,57,58,51,224,107,65,87,11,190,251,151,41,142,227,79,82, +79,25,201,121,128,167,140,46,104,253,255,170,189,240,46,159,254,34,243,144,132,77,76,83,42,0,66,51,177,103,169,24,30,198,56,248,226,246,157,0,23,186,150,110,91,17,137,132,8,138,38,164,57,169,10,64,67,194,18,181,13,244,60,19,4,88,68,130,85,50,92,17,45,141,184,6,57,206,74,91,203,112,163,148,104,246,203,27,90,50,73,67,25,75,129,46,35,185,216,166,44,11,175,127,118,247,54,111,101,180,49,121,88,38,149,16,164,108,180,193,156,81,218,128,252,33,33,183,136,39,133,5,51,147,64,23,147,55,3,74,87,187,120,140,162,13,48,102,168,4,211,84,42,162,157,158,211,57,94,83,206,74,158,12,139,70,239,43,164,187,220,52,175,139,173,189,236,37,23,23,159,205,228,107,106,199,239,120,18,31,166,228,250,146,166,73,104,250,131,246,76,83,200,108,179,141,209,58,167,16,251,33,140,252,12,245,157,206,210,74,153,189,244,145,132,33,136,72,178,166,0,34,133,125,46,178,47,47,162,123,102,247,139,57,27,13,82,202,196,191,144,33,190,230,41,176, +48,174,230,223,179,36,230,48,150,221,156,21,72,95,11,20,208,196,52,76,36,94,33,176,25,45,255,22,117,110,177,242,23,76,103,73,10,112,2,76,93,109,96,149,64,34,187,61,134,23,11,131,113,165,104,174,64,12,152,148,89,139,158,131,130,56,136,208,31,99,128,143,34,31,98,77,4,1,191,200,43,242,207,199,254,27,222,174,123,55,66,225,247,134,221,76,201,17,194,3,179,145,126,38,146,128,145,187,127,106,174,198,150,54,112,17,3,72,182,158,185,189,200,219,251,197,46,53,154,26,238,102,195,131,233,249,156,45,55,80,132,0,56,239,150,19,242,110,101,30,236,167,131,225,179,60,248,62,95,232,30,98,134,247,225,158,189,222,159,36,176,91,226,130,205,252,123,224,10,243,213,68,184,97,181,44,232,215,103,202,126,160,246,38,233,6,251,131,120,27,180,5,42,44,177,90,144,54,108,63,130,135,138,217,150,162,14,29,116,189,4,26,134,92,189,174,199,148,185,87,245,251,187,46,35,149,73,100,179,66,163,233,250,254,133,244,156,59,221,203,234,237,48,123,31,216, +48,78,1,254,46,56,218,46,44,248,212,248,142,43,21,204,211,18,48,198,9,126,66,7,188,227,93,53,143,179,221,138,253,131,26,193,124,140,132,148,80,211,212,208,180,117,25,34,73,80,178,209,1,140,168,7,9,119,144,179,2,10,142,10,127,85,201,53,44,178,156,141,212,144,208,1,18,82,246,127,0,102,118,159,183,32,88,210,92,26,135,170,223,90,99,46,33,155,179,175,57,115,58,40,167,67,50,43,94,136,105,86,42,57,61,107,164,212,105,9,170,229,25,99,253,233,29,140,71,79,132,119,75,25,86,137,135,86,82,209,10,164,73,42,4,149,160,164,231,81,138,15,37,139,53,179,13,15,40,49,57,147,88,245,225,11,174,239,208,99,255,141,67,19,136,126,202,194,158,89,91,108,85,22,102,148,47,180,119,250,28,107,215,207,204,150,125,18,77,188,225,97,106,20,235,255,142,113,35,2,39,226,206,176,130,73,243,17,77,229,236,201,9,178,70,119,108,152,223,2,191,208,196,99,30,80,140,133,118,23,203,154,209,67,2,133,126,166,141,97,18,96,78,180,183,128, +232,96,107,82,129,32,184,98,18,47,143,73,151,11,249,66,76,34,22,54,21,216,129,44,3,0,48,186,246,226,237,144,9,4,186,188,11,153,4,78,232,4,200,68,43,81,144,157,13,169,111,75,153,201,56,58,235,180,33,126,141,61,18,13,141,187,163,196,76,165,169,131,198,206,164,198,76,135,225,190,202,72,31,197,231,199,215,88,100,232,41,209,153,41,121,175,227,62,74,205,166,72,75,52,104,179,73,139,178,34,234,192,31,120,64,213,74,92,93,141,71,215,86,91,140,67,125,1,25,178,240,73,130,214,172,170,148,130,131,207,162,25,3,11,111,196,82,18,38,76,184,72,216,101,60,150,64,68,66,32,204,245,161,122,92,203,158,55,138,115,191,128,139,52,173,144,173,147,1,148,207,13,192,78,176,12,46,156,203,208,98,190,2,224,15,5,11,104,66,118,199,35,255,60,201,35,251,165,3,25,36,46,49,0,202,108,230,212,30,126,255,37,183,185,8,123,231,199,181,110,12,154,181,91,176,114,160,148,238,196,11,153,243,62,25,3,193,132,72,142,42,248,40,248,109,129, +137,34,222,41,2,4,139,222,36,106,199,60,8,10,90,68,147,97,116,143,168,126,63,32,161,213,53,197,146,49,157,11,33,115,26,109,133,2,45,30,40,144,43,218,22,138,199,50,63,12,172,171,166,219,85,180,36,87,70,94,17,41,212,48,19,172,246,142,222,110,4,234,72,93,237,57,137,252,129,192,99,252,254,163,64,213,215,117,203,36,206,153,97,234,142,101,240,20,174,154,176,175,221,218,2,3,254,154,57,182,238,42,103,133,169,127,46,49,86,188,184,54,154,239,221,241,178,159,126,38,247,237,8,98,21,53,97,78,180,4,240,42,120,126,22,241,51,29,218,70,120,96,119,216,236,245,178,190,48,97,228,140,121,230,219,138,28,230,237,172,53,173,124,115,182,22,81,107,1,163,149,0,187,142,78,254,86,168,28,27,53,174,75,101,147,185,40,102,91,1,165,69,89,130,126,64,122,56,59,27,66,88,104,55,217,78,184,107,69,175,121,106,116,219,109,150,235,81,244,237,125,249,241,175,39,115,227,19,145,172,248,214,18,45,176,154,208,3,204,5,58,120,233,178,247,233, +203,154,90,177,174,169,76,68,102,25,132,20,142,191,107,1,21,240,18,127,19,117,162,213,25,173,155,150,79,13,84,114,96,7,90,69,104,111,141,239,234,25,164,113,9,145,122,140,18,141,246,166,192,144,84,201,27,113,63,68,72,137,7,234,24,53,9,194,201,149,208,138,70,148,187,44,198,244,3,46,204,49,151,6,0,184,232,102,9,34,21,143,108,16,28,76,171,80,86,69,174,115,80,59,72,109,152,26,80,235,156,28,2,199,241,36,172,22,32,190,84,48,171,110,23,33,159,75,1,149,144,21,95,39,150,162,140,131,137,19,83,156,51,36,69,155,147,117,251,8,1,125,109,130,114,160,251,49,204,180,215,64,131,47,41,252,91,226,177,37,186,88,29,239,191,32,248,44,96,195,24,3,163,82,56,49,77,80,215,104,125,196,44,234,183,19,8,105,2,159,22,158,169,26,134,33,136,72,215,2,194,86,98,1,30,26,162,130,127,132,76,248,66,158,154,52,146,237,136,133,69,40,166,156,181,118,14,52,98,20,64,140,164,143,36,195,160,11,154,204,149,16,182,114,79,238, +255,145,112,78,109,215,51,235,18,253,235,211,182,237,103,218,182,109,219,182,205,253,126,123,229,60,57,200,85,125,87,141,74,119,68,235,82,107,0,64,193,40,62,137,198,13,156,92,229,166,16,164,14,92,192,20,178,56,233,193,61,207,8,204,108,240,88,106,12,140,10,12,45,234,248,202,91,252,233,243,9,94,219,248,171,179,193,20,208,129,121,121,182,118,2,23,191,231,12,190,229,122,242,232,91,7,227,0,8,142,195,175,77,219,52,158,11,122,100,141,195,34,49,176,181,240,70,225,143,126,112,83,86,50,143,87,176,121,82,106,66,103,66,124,182,167,33,158,61,11,49,121,218,71,127,158,36,255,6,14,98,145,251,83,104,229,220,182,36,187,149,44,168,159,192,41,35,112,208,242,189,250,155,64,245,0,14,25,145,173,240,196,109,235,127,12,148,115,149,164,77,176,129,211,24,103,190,19,241,235,126,158,120,47,172,95,131,203,165,71,85,221,178,169,231,221,162,48,117,22,244,253,54,80,38,99,44,135,224,255,158,42,81,130,212,33,88,152,79,224,209,233,251,125,73,233, +4,164,3,38,98,88,64,51,63,136,118,17,8,218,66,36,205,58,147,27,180,71,57,229,115,213,76,161,60,54,8,0,168,72,16,150,123,223,37,127,20,117,37,20,207,108,72,26,193,173,86,247,233,212,221,160,190,5,232,60,240,248,91,86,232,48,125,208,16,161,15,4,194,143,96,250,216,199,198,226,100,125,228,170,51,135,36,136,16,19,122,205,247,47,134,156,198,18,74,237,30,121,98,136,44,240,161,97,170,128,114,238,113,181,152,106,46,25,99,203,78,93,116,85,233,85,91,197,108,5,105,11,160,24,220,142,255,148,163,234,68,236,0,175,157,241,3,202,20,181,106,148,5,214,141,172,175,233,37,186,166,206,174,3,149,92,203,193,204,77,149,197,113,148,106,115,148,96,120,205,244,160,73,143,52,237,179,169,95,214,149,241,147,70,180,244,248,145,149,228,124,240,23,180,90,46,243,12,22,249,179,219,30,135,207,254,245,125,253,174,239,75,167,81,218,213,160,20,209,227,159,91,236,112,187,46,141,215,241,58,220,143,207,112,255,89,210,231,171,177,116,59,218,63,237,61, +80,228,39,219,76,197,177,112,97,113,76,206,82,31,178,109,219,2,237,16,82,81,20,201,201,111,205,170,200,114,72,147,148,238,36,208,180,70,3,8,250,43,21,8,1,9,19,81,145,226,150,193,138,24,220,64,42,83,62,214,96,109,71,8,164,38,248,51,254,81,145,98,5,32,241,8,39,196,101,37,167,66,236,35,92,100,140,131,234,150,19,6,89,234,174,188,223,122,26,48,168,65,148,61,179,0,32,163,154,60,224,226,151,40,123,30,72,0,149,67,67,230,65,53,207,71,130,65,214,20,24,43,231,85,72,72,115,66,136,137,2,155,178,66,70,189,50,213,178,208,12,40,246,227,250,167,198,156,87,235,35,114,104,80,223,107,34,64,208,86,200,161,65,76,223,52,124,252,239,191,141,245,5,127,100,140,45,96,246,193,41,62,250,134,16,32,195,165,244,44,80,60,17,75,67,212,98,3,94,141,236,18,153,203,176,231,63,123,200,32,104,32,10,64,0,121,30,236,183,21,114,98,218,155,191,119,183,209,251,168,12,96,11,106,212,125,36,100,127,224,108,165,22,61,183,82, +14,83,6,138,156,109,53,234,0,45,12,237,244,89,42,247,89,60,122,214,232,73,88,77,32,212,3,136,114,150,1,48,67,75,79,189,22,59,95,247,211,158,196,196,26,217,101,28,164,238,223,237,19,96,95,218,110,5,128,24,42,218,204,153,99,121,140,139,141,91,60,37,180,252,47,239,238,208,178,79,154,27,70,44,227,96,205,20,168,68,27,217,80,177,154,174,82,95,212,50,97,124,196,196,169,72,101,86,210,229,22,240,46,228,30,92,62,101,4,12,240,1,87,204,30,20,222,245,7,244,195,237,101,223,67,54,32,162,27,80,51,219,133,200,1,238,2,182,108,130,199,139,223,22,217,236,83,176,58,69,0,160,45,38,78,143,103,173,227,47,174,37,38,215,203,60,39,8,250,174,224,31,61,197,209,239,138,200,36,144,131,234,126,148,247,2,135,104,64,14,94,5,24,51,166,147,36,228,235,236,65,194,95,251,52,134,55,8,35,2,67,11,64,42,146,31,202,30,25,225,209,14,237,11,209,25,97,26,144,169,220,18,50,10,37,141,124,32,64,155,82,187,128,113,160,176, +59,50,104,27,132,205,231,76,3,71,186,86,8,70,214,20,76,16,50,253,216,72,1,171,149,174,237,242,123,75,31,174,111,135,210,123,181,14,247,182,128,127,202,127,252,61,70,204,161,143,85,138,30,140,192,121,76,223,60,38,119,161,93,182,187,122,154,144,234,28,100,225,230,194,241,173,30,215,78,8,74,29,105,178,159,48,91,13,43,109,190,170,102,96,126,26,91,79,15,195,19,80,10,79,23,217,79,89,183,159,156,23,187,69,229,250,24,149,91,138,225,116,179,155,91,141,81,38,40,103,98,135,84,97,227,37,185,234,46,100,237,150,139,161,151,173,146,177,134,212,98,40,195,181,215,57,2,35,68,227,132,95,56,111,229,194,41,80,67,82,171,191,108,104,184,182,139,125,157,207,106,160,166,246,85,237,110,247,188,45,151,215,227,113,248,28,242,207,131,179,0,92,157,11,247,7,219,226,118,253,223,169,90,159,138,70,70,209,109,25,182,35,143,57,191,127,113,17,188,10,36,107,184,197,93,221,81,74,163,4,43,203,234,144,35,244,249,205,106,141,85,208,70,169,198,217, +11,101,7,204,5,134,113,142,180,3,198,247,65,129,109,128,6,170,168,235,66,66,19,147,234,17,148,78,134,136,210,76,146,147,164,39,161,36,121,255,236,153,19,119,140,29,5,83,1,170,169,16,105,158,37,103,62,205,171,208,248,38,52,172,16,109,243,200,174,247,168,74,232,2,48,248,197,189,38,116,140,82,2,20,135,233,215,230,129,189,63,196,106,42,140,131,142,147,86,53,0,228,94,68,154,8,201,221,180,254,170,156,232,213,75,76,228,5,234,193,206,169,16,126,66,218,203,117,128,142,136,97,234,125,167,197,41,196,220,134,238,59,193,109,209,255,142,65,50,157,200,41,35,209,147,92,160,86,114,4,34,136,13,168,117,33,189,176,134,172,67,146,203,137,68,165,103,24,47,142,208,58,114,130,25,28,237,210,201,88,72,50,109,219,226,41,31,136,96,42,240,191,104,241,100,208,131,18,15,225,4,12,20,133,135,131,203,41,179,113,96,233,90,160,22,173,107,113,90,165,124,224,63,156,165,48,69,86,143,141,22,31,190,24,204,67,105,253,137,215,113,169,159,224,249,186, +173,152,34,144,191,188,54,75,158,174,179,149,120,92,251,103,43,178,246,231,111,61,220,155,161,22,157,43,44,63,190,145,67,145,9,139,48,232,189,154,132,1,254,60,42,151,249,4,126,122,102,8,74,222,15,169,74,147,22,130,148,57,2,47,32,106,128,231,143,122,4,211,207,101,147,159,81,248,73,232,46,9,6,190,4,24,1,6,144,4,32,155,199,162,106,124,201,131,40,223,242,161,240,221,11,206,230,145,137,248,81,237,40,174,61,98,7,131,128,175,200,140,0,129,127,44,65,196,99,47,101,102,6,112,249,13,130,12,224,32,33,124,225,144,119,142,142,62,152,4,247,56,129,51,88,227,229,161,50,32,184,95,16,120,28,112,44,18,155,43,73,144,23,226,104,207,13,130,67,31,146,212,118,203,252,91,96,142,197,68,64,128,107,63,194,216,148,1,103,224,62,96,173,19,0,215,130,185,114,240,100,106,87,80,97,107,177,240,127,125,86,48,9,132,65,154,133,115,125,230,29,164,66,182,10,24,1,50,229,94,68,80,67,12,217,66,249,99,56,64,164,143,229,115,12,115, +55,227,226,69,63,156,246,230,7,182,154,161,5,28,191,225,83,145,175,52,240,23,169,217,22,148,32,210,154,161,93,194,77,207,101,217,234,222,15,161,173,242,246,33,102,103,251,201,158,71,183,255,183,217,155,31,238,134,183,199,221,241,254,169,98,250,125,209,79,31,213,163,75,125,188,111,99,239,199,190,236,244,24,216,215,7,71,46,24,154,33,151,245,84,82,173,190,15,89,173,119,102,159,224,170,101,128,165,242,20,75,78,154,236,32,199,102,230,108,212,142,101,69,249,9,12,168,6,137,199,114,18,99,144,23,206,131,24,134,6,246,232,215,190,173,62,253,241,240,135,61,47,111,103,154,188,191,154,157,29,113,4,97,244,109,197,11,155,234,32,243,139,6,46,205,111,37,169,218,78,206,175,181,251,17,55,214,93,71,184,170,31,244,81,22,54,21,19,243,208,77,48,214,114,133,197,228,149,107,205,201,213,177,175,165,75,14,82,188,31,71,7,252,8,132,113,169,32,32,32,134,57,158,177,190,196,33,56,57,33,177,79,162,118,211,131,188,145,119,42,104,123,130,96,12,112, +179,254,16,101,213,144,240,36,102,205,42,71,24,154,145,156,57,67,26,33,230,66,52,255,24,168,244,89,36,73,210,19,2,218,179,13,129,186,32,245,63,5,164,21,16,72,151,117,157,140,8,153,64,89,144,2,33,158,151,185,89,131,85,45,161,229,242,246,141,135,161,141,8,131,2,51,243,195,154,3,136,84,105,208,186,188,32,90,91,148,178,128,243,211,76,160,61,223,255,83,210,204,102,169,37,157,125,72,57,1,202,68,194,14,161,2,25,104,248,41,240,40,216,142,118,55,147,128,186,144,13,222,111,171,141,220,92,10,179,163,163,107,219,2,72,114,167,113,249,82,12,83,182,13,156,200,86,12,48,100,113,8,23,80,249,0,5,210,73,44,4,78,186,145,178,24,146,161,26,224,51,63,32,242,16,19,129,99,75,48,132,61,8,36,248,66,233,39,79,112,191,239,51,10,216,176,153,108,225,229,128,246,190,67,143,38,221,251,241,139,127,204,136,179,104,119,208,63,242,244,83,236,59,34,208,61,20,81,140,92,18,230,10,19,240,234,52,100,49,148,139,101,175,233,117,46, +241,199,50,55,148,178,230,101,1,217,10,55,87,142,52,51,82,211,9,150,52,26,134,130,201,105,176,47,44,80,73,40,209,234,180,37,0,160,23,187,136,56,171,200,115,135,97,6,18,139,70,156,213,235,38,218,106,107,27,90,146,69,195,61,113,107,142,144,52,18,105,9,60,3,207,49,16,191,95,53,229,19,1,49,20,135,151,139,66,170,69,33,51,143,55,187,55,77,245,31,207,55,128,112,177,143,26,135,162,97,70,64,5,8,219,140,47,21,189,217,8,92,87,152,214,55,0,153,43,72,234,197,42,28,60,242,136,64,49,53,203,147,210,246,7,234,240,204,25,240,75,77,250,156,218,171,74,186,37,8,20,107,161,0,90,57,208,58,46,136,92,235,89,87,233,8,180,245,193,163,87,2,74,216,231,102,252,228,60,17,253,20,161,53,76,36,200,117,21,65,113,136,53,64,234,42,38,209,177,186,190,204,13,115,23,131,140,38,196,213,185,47,38,188,24,150,54,200,97,184,127,203,56,20,184,59,193,146,254,34,69,219,67,224,215,126,188,126,242,171,17,1,202,61,63,128, +183,112,203,139,252,252,155,67,70,42,151,194,244,82,109,251,25,126,119,3,33,103,178,107,151,194,71,178,152,59,45,254,67,205,197,212,174,48,85,175,21,162,94,6,231,34,116,7,239,248,209,154,103,96,110,158,118,55,98,57,120,125,102,185,196,219,27,86,186,205,109,18,49,92,30,211,28,40,253,8,39,58,111,164,84,171,245,16,96,189,92,87,22,244,245,221,202,71,61,136,28,62,223,149,110,230,59,237,22,187,209,245,117,219,174,206,163,231,106,117,92,144,140,100,127,203,13,124,109,168,187,80,107,55,166,137,241,101,116,55,95,219,236,93,9,94,234,236,204,147,251,90,156,40,48,171,98,222,42,6,125,70,251,40,33,167,120,130,160,202,106,51,24,205,116,71,198,72,183,16,59,202,19,8,117,171,212,102,12,149,118,97,157,68,115,46,161,99,253,121,10,25,94,42,198,42,182,106,236,167,167,101,145,55,73,130,0,193,54,249,100,18,4,80,140,213,162,127,19,53,105,21,206,136,119,153,71,142,96,65,235,35,61,221,91,244,251,225,2,103,190,62,233,163,33,85, +60,98,5,181,87,146,128,126,3,226,39,100,220,181,184,20,102,174,172,74,92,129,20,201,33,90,227,222,29,153,135,112,84,52,101,25,25,109,173,19,248,77,219,33,216,88,210,94,106,35,226,187,154,117,115,252,23,205,247,67,119,125,214,173,207,7,12,180,109,128,40,171,207,1,33,112,172,1,26,84,134,227,100,74,53,50,229,8,6,114,65,8,22,92,57,215,39,8,49,230,33,240,214,245,52,14,124,249,144,47,254,0,116,26,93,15,14,227,10,4,147,31,195,151,96,194,200,74,161,16,180,35,71,86,9,134,38,84,163,18,208,126,203,207,68,133,161,117,6,50,131,103,195,134,133,102,162,147,67,20,49,131,209,144,195,167,143,33,136,65,224,192,160,13,163,103,19,61,95,234,63,242,93,162,125,54,240,227,172,206,84,210,169,100,48,112,40,111,45,203,242,115,182,189,228,169,4,100,227,204,43,115,146,116,113,6,247,108,134,160,239,38,1,16,87,214,208,126,239,147,105,108,236,10,39,117,202,119,200,104,253,195,52,145,81,126,68,216,11,195,76,30,98,70,43,197, +226,221,163,67,100,41,138,117,9,155,126,67,36,114,183,22,116,200,95,93,251,201,171,221,10,149,109,132,1,168,202,119,197,179,88,33,163,64,24,68,145,131,171,122,16,168,34,136,74,191,63,152,148,57,238,123,157,222,58,52,248,65,35,24,199,177,176,28,136,112,239,16,211,172,138,249,146,40,75,58,119,234,96,215,144,243,213,120,97,146,166,5,196,228,116,116,118,84,192,17,132,20,208,57,92,194,17,26,140,62,60,0,210,76,39,128,201,161,145,176,152,53,248,224,105,51,16,180,59,97,230,86,27,155,40,159,43,224,170,65,3,215,98,234,200,63,84,131,8,195,58,16,0,7,216,72,250,68,91,160,112,138,200,98,132,48,22,222,177,191,159,206,2,20,105,149,110,32,161,207,118,246,12,216,150,233,50,250,60,248,208,32,182,233,157,133,245,8,234,17,222,240,241,207,39,199,91,25,8,33,195,89,81,220,82,137,227,93,226,204,254,221,28,34,54,113,90,190,14,178,196,118,128,169,214,157,125,137,159,5,250,16,18,14,54,208,97,66,90,213,153,146,159,194,183,195, +127,19,197,234,178,108,226,223,211,42,190,203,154,241,22,100,231,22,137,109,68,9,13,200,63,72,58,57,53,11,132,21,168,97,169,218,181,62,130,215,157,201,145,96,92,145,230,76,79,93,75,109,70,174,96,241,157,199,179,123,222,252,10,230,167,190,217,225,107,94,107,124,237,26,61,117,220,58,140,212,213,73,100,81,246,230,225,201,142,206,178,149,131,12,68,220,131,198,105,219,74,179,15,246,154,0,16,96,54,152,144,97,154,163,101,173,137,77,144,137,49,204,26,8,139,253,129,240,50,62,68,203,145,61,48,61,51,136,179,4,161,163,189,40,45,60,173,168,63,19,131,30,130,40,5,8,144,148,70,110,174,145,182,36,164,27,165,10,220,210,41,89,109,81,7,39,67,37,5,2,3,177,193,172,20,98,193,200,125,53,41,38,131,6,182,121,53,11,40,132,133,79,177,209,164,79,4,210,136,70,220,172,234,130,8,134,217,88,123,38,145,189,141,125,112,0,140,35,173,228,92,122,214,212,72,51,78,48,34,141,122,123,135,218,85,31,19,128,192,78,202,141,63,212,48,29, +226,117,95,250,255,237,150,104,126,53,111,169,18,1,128,229,235,76,24,188,242,64,237,53,32,88,206,6,236,159,97,44,220,76,16,136,255,203,29,36,100,2,114,211,222,19,215,182,113,208,134,180,65,251,193,218,218,15,199,161,98,225,28,153,69,166,108,208,59,55,99,190,11,194,165,240,156,58,49,67,202,102,193,170,236,17,34,228,135,2,50,1,80,192,255,61,30,26,187,167,137,5,210,70,90,29,15,1,27,226,152,86,151,16,218,247,64,185,191,199,169,166,136,224,132,33,40,3,194,0,16,26,14,178,236,5,75,144,96,137,64,192,232,40,84,130,116,95,28,26,4,69,26,76,153,112,64,180,188,213,31,174,67,231,52,13,60,17,177,145,98,82,168,74,31,235,195,108,240,192,228,219,52,246,11,193,196,213,241,111,98,221,109,23,231,125,40,98,202,201,125,154,94,18,207,100,250,170,60,50,58,114,204,139,45,144,217,177,175,12,250,159,70,210,220,210,42,63,188,171,173,29,188,238,7,56,35,167,12,170,125,122,132,208,67,11,234,19,197,171,116,159,220,111,189,253, +5,98,31,251,52,78,17,192,143,161,146,168,6,128,184,49,131,57,174,135,247,156,181,37,2,195,69,1,82,0,118,250,87,239,111,171,85,9,181,203,26,75,84,74,117,136,8,152,148,1,131,254,27,224,233,197,255,209,204,151,26,123,153,128,148,169,41,16,61,60,239,94,62,38,230,161,116,125,123,80,237,24,184,215,235,136,33,30,71,0,250,16,193,19,29,11,167,89,86,9,162,150,30,166,88,172,60,39,67,151,238,21,86,65,48,84,224,149,96,137,48,240,9,50,253,198,184,25,62,139,253,154,179,36,121,174,31,88,123,9,130,58,22,64,170,223,190,148,173,154,167,126,0,182,49,177,170,204,24,81,222,214,87,120,215,134,223,235,118,208,108,127,37,20,168,176,159,45,175,200,78,117,166,83,126,151,143,96,168,66,159,182,237,147,10,229,35,206,90,238,116,137,97,234,73,85,58,49,179,43,97,61,3,4,37,62,208,92,199,135,128,38,11,63,23,145,81,237,121,61,36,207,230,94,139,167,14,175,241,51,87,71,14,90,109,182,119,149,169,57,111,98,106,46,176,101, +175,119,178,206,181,246,182,141,50,206,156,190,74,155,56,79,227,239,166,148,210,26,82,35,211,170,108,185,56,196,121,84,214,163,180,148,231,178,28,82,142,118,154,184,203,17,34,102,212,135,82,1,48,79,86,190,231,6,4,61,157,109,80,110,46,17,81,213,16,5,33,129,69,133,27,12,33,92,68,169,251,75,100,253,220,105,195,229,17,9,35,228,32,157,221,25,237,105,161,143,125,67,147,93,147,71,180,155,14,66,75,154,156,146,23,159,141,76,148,123,37,158,14,22,58,253,100,128,2,154,136,80,172,156,7,251,128,183,197,18,2,97,17,47,179,157,181,244,201,59,45,228,19,251,121,208,249,53,105,236,81,78,123,87,14,5,149,199,127,26,71,128,40,193,178,249,45,252,237,92,235,14,47,224,160,210,255,255,224,149,236,191,205,232,109,12,205,63,68,7,228,86,81,11,131,172,235,114,81,51,216,0,88,90,89,220,147,44,46,17,75,151,132,44,58,97,0,120,162,140,20,6,127,192,152,104,144,25,83,230,159,167,50,11,7,86,232,138,72,88,109,117,90,24,235,39, +246,210,46,129,70,198,208,8,126,58,220,127,0,196,99,153,253,187,111,212,169,209,67,204,204,2,148,250,235,44,179,231,203,145,48,126,108,207,45,221,63,182,147,36,203,12,116,195,46,18,149,4,120,176,11,160,65,144,129,199,101,59,47,146,9,75,19,221,89,110,61,15,211,14,127,131,111,121,232,105,162,239,241,232,172,20,131,129,84,49,89,46,23,40,68,107,100,50,213,193,195,23,102,175,113,192,215,252,149,54,202,64,233,228,65,194,254,100,110,97,140,109,118,74,232,134,17,82,1,47,163,23,188,49,251,97,250,95,160,146,250,12,110,132,219,142,136,69,50,29,134,9,36,64,80,8,133,239,60,233,66,58,46,6,172,221,99,1,149,255,94,72,6,21,64,92,60,251,206,63,196,71,78,24,210,230,134,225,164,100,139,174,1,158,143,124,126,77,209,20,113,22,41,40,156,230,168,113,11,53,2,89,141,96,74,111,103,121,143,178,183,254,235,72,229,127,121,220,65,225,54,238,82,110,228,21,209,200,73,246,197,82,61,85,248,27,183,188,164,183,197,92,41,76,78,193, +80,237,208,184,198,239,243,123,234,33,15,94,158,224,253,46,63,2,43,244,255,0,113,194,128,7,79,32,120,92,223,78,92,243,203,35,255,253,135,134,121,223,55,41,117,33,46,164,70,35,209,156,191,68,188,104,126,80,32,209,61,40,126,152,134,252,208,56,248,49,90,51,125,48,128,96,245,252,194,220,251,101,101,178,176,45,222,251,187,211,231,43,93,225,56,231,203,158,210,192,88,147,208,56,172,7,39,33,128,128,196,22,0,82,108,1,63,129,56,53,93,50,196,71,131,18,39,145,51,155,228,208,122,98,119,126,193,158,153,16,254,152,55,21,115,31,225,22,61,171,16,78,129,24,52,222,141,129,21,199,200,90,104,14,193,80,166,114,146,239,75,245,237,78,24,62,151,185,60,104,129,119,202,108,219,103,250,17,207,217,169,62,10,152,252,15,252,37,72,231,236,123,241,97,193,191,94,154,250,96,190,246,112,63,43,67,231,198,123,16,235,64,13,99,181,168,182,79,56,233,195,21,142,172,117,166,49,252,47,137,164,140,212,237,210,132,118,209,186,23,92,155,12,136,16,248, +9,189,94,239,254,57,189,223,86,215,207,165,245,188,75,156,158,197,39,171,85,6,138,53,31,140,222,122,119,218,195,101,12,154,57,26,59,25,151,76,53,79,219,236,192,242,214,196,89,74,26,236,152,175,52,202,18,129,234,181,107,21,121,251,240,227,82,103,14,23,251,8,94,84,187,207,189,177,2,2,75,153,39,134,105,126,116,199,239,32,64,28,29,12,232,3,64,4,153,133,0,9,149,168,181,141,83,184,107,151,239,98,204,145,246,24,40,107,77,215,71,114,141,203,129,133,226,36,93,86,210,254,142,143,55,160,62,132,139,36,164,185,29,123,44,16,32,16,187,180,204,80,0,169,40,202,206,81,31,75,185,27,197,2,37,133,135,1,164,119,110,118,230,77,209,126,203,190,174,59,180,224,233,72,219,13,201,97,203,127,176,187,48,187,167,11,111,105,128,61,169,234,53,30,86,101,63,245,5,174,236,191,173,207,229,249,244,248,173,159,205,176,9,117,195,165,35,224,208,10,132,34,249,9,28,29,232,195,107,39,174,205,114,254,236,131,60,72,35,206,17,5,254,241,180,239, +108,229,55,128,60,112,191,45,72,141,148,105,167,221,155,208,29,69,241,146,26,141,254,151,72,135,116,142,136,8,16,136,8,16,186,18,31,67,60,64,65,200,107,94,192,199,190,223,193,233,124,63,63,46,203,103,110,186,9,61,142,107,39,76,154,56,245,160,68,159,37,23,6,8,96,32,131,16,106,179,131,32,64,78,137,88,30,52,123,40,58,14,207,178,111,62,12,43,37,134,153,196,91,3,41,7,4,41,92,54,27,156,157,205,41,84,115,194,112,217,176,22,135,168,18,167,70,187,116,25,55,39,152,213,92,248,187,192,175,31,72,121,158,117,134,57,195,165,4,17,170,114,76,87,11,5,28,39,206,140,62,130,15,78,148,139,99,216,175,214,190,30,197,192,191,201,117,236,243,58,110,112,221,222,158,83,58,241,33,124,170,161,177,162,147,61,146,177,26,221,95,30,16,27,104,79,81,214,215,163,219,133,164,200,65,159,218,104,213,215,125,237,116,147,30,59,150,26,177,111,244,155,76,119,195,247,202,53,239,46,85,114,13,239,206,69,207,55,217,88,20,57,70,225,129,49, +102,19,44,191,73,121,241,133,32,76,6,111,42,55,80,55,173,17,108,58,55,181,168,27,7,118,172,16,121,199,182,185,105,171,48,154,120,68,189,61,58,102,2,133,192,208,183,65,145,128,144,67,70,205,37,128,153,217,34,1,9,98,69,128,130,112,132,180,121,112,40,199,40,10,252,0,177,201,212,68,128,237,158,158,201,88,158,2,76,48,140,27,205,151,84,24,41,195,120,190,99,203,225,38,212,163,34,7,129,52,3,143,245,23,28,125,16,131,129,12,82,165,98,142,39,85,25,203,13,104,151,128,23,32,82,160,122,198,125,63,186,238,7,107,200,241,77,233,188,170,87,77,54,102,62,79,126,64,164,209,5,223,136,152,106,17,225,158,12,117,35,204,172,74,180,161,124,232,215,208,247,126,213,63,115,148,172,229,29,71,204,106,26,95,79,16,240,192,8,207,206,122,88,219,109,204,58,28,193,55,222,173,225,198,217,157,219,0,115,121,187,4,220,156,46,95,184,226,249,253,160,85,43,197,137,173,209,26,95,160,69,210,81,246,160,252,9,223,80,60,253,241,117,99,82,140, +63,194,66,0,231,213,199,34,236,73,185,113,30,207,231,40,238,126,121,62,53,23,155,78,139,159,109,117,61,105,14,20,255,102,253,132,64,83,64,42,147,137,205,220,247,16,38,36,15,18,194,13,195,138,175,26,106,191,75,157,106,129,22,181,158,165,128,91,60,101,205,155,16,210,172,149,223,248,222,242,101,237,217,204,27,60,107,174,180,42,192,45,233,188,37,88,57,235,247,95,162,19,171,240,117,229,151,185,49,203,120,231,59,188,191,192,69,111,199,102,196,176,200,207,110,124,131,252,198,245,241,122,173,252,227,107,116,92,82,182,110,145,49,149,104,9,135,101,115,160,223,114,81,201,86,65,128,48,141,238,7,231,199,92,24,40,15,108,83,130,18,63,185,102,192,166,215,119,247,254,33,185,190,135,188,235,117,250,132,222,239,231,121,239,116,181,93,25,188,118,184,49,174,150,154,222,249,136,116,31,153,166,76,145,209,231,29,159,242,69,100,153,168,124,86,157,51,80,69,95,55,188,93,83,186,145,111,235,215,193,118,220,73,150,197,83,183,232,164,66,118,10,0,1,164,58, +109,32,41,179,8,142,202,179,4,26,159,153,171,77,50,26,6,119,8,4,72,12,147,176,1,51,79,63,65,240,255,234,229,129,42,147,182,181,221,136,32,53,193,197,23,55,1,28,38,185,246,153,39,81,176,56,138,211,87,175,80,162,12,3,26,8,180,164,24,146,20,150,84,248,153,130,214,241,199,91,106,15,123,216,163,88,86,211,100,1,78,188,150,14,89,38,174,144,179,94,236,53,136,124,208,195,214,112,45,99,205,199,67,240,69,149,116,186,134,17,63,75,16,117,177,128,26,55,77,38,236,241,224,131,149,21,152,4,77,140,154,12,128,83,128,82,229,251,5,251,190,227,185,212,236,218,154,181,98,219,152,175,113,149,11,117,34,57,16,128,128,129,32,253,103,31,14,192,64,9,218,21,100,46,188,145,217,145,46,207,95,96,36,70,46,164,90,110,54,130,123,123,79,231,68,228,125,5,112,34,81,82,109,240,92,149,5,21,97,187,202,59,234,61,41,141,60,230,161,112,151,183,242,51,42,222,246,155,56,141,108,151,84,137,142,27,163,116,74,183,248,201,163,233,169,122, +185,221,207,103,239,49,251,174,47,105,170,52,96,254,149,72,194,240,167,1,165,128,30,166,185,166,164,37,74,109,147,244,36,83,36,12,254,13,78,241,144,249,35,36,219,215,188,205,249,19,35,199,136,237,195,235,88,111,18,206,205,18,110,127,236,94,246,234,166,223,179,202,11,165,198,250,161,154,246,106,47,41,68,140,144,111,142,97,118,168,122,235,93,34,54,120,50,179,205,95,101,194,183,29,103,206,129,230,1,66,140,125,55,113,142,43,131,71,203,55,126,188,115,167,19,171,83,33,152,237,148,197,76,1,234,205,141,134,198,13,90,113,157,171,98,173,241,172,63,228,231,155,167,247,128,163,95,163,209,243,247,81,77,87,53,89,108,91,195,191,82,31,131,175,119,159,36,50,183,108,85,210,8,197,251,81,40,177,49,117,249,42,238,251,8,2,81,165,74,235,220,133,252,209,208,25,60,244,243,167,199,98,197,25,172,165,35,209,64,44,233,224,26,5,0,8,166,160,219,9,2,65,12,105,49,76,96,17,238,195,151,83,184,47,72,135,164,179,84,90,143,138,28,235,251,36, +106,107,184,190,71,201,104,40,62,73,199,168,136,46,92,11,100,36,99,61,77,162,206,81,17,150,84,25,48,151,25,37,4,238,67,59,129,21,35,218,113,127,7,101,13,123,122,80,214,121,205,2,57,204,132,209,109,50,194,128,30,98,153,60,45,82,81,30,4,136,132,24,157,195,105,148,236,128,64,235,45,172,126,157,53,31,100,81,173,13,187,210,98,159,148,90,136,38,72,206,235,207,228,166,2,135,76,37,147,240,103,178,147,66,199,222,177,3,188,19,248,63,122,110,99,179,225,59,88,252,215,248,159,229,212,204,149,141,39,11,48,50,67,4,41,4,200,141,17,172,119,97,78,45,130,42,210,34,75,177,142,15,186,50,55,27,207,119,0,255,69,240,84,65,81,84,207,103,72,154,212,69,93,75,156,130,186,100,167,187,30,24,131,185,83,159,254,207,141,187,141,200,38,72,68,103,201,67,58,109,218,133,54,35,19,75,231,237,126,81,111,248,15,219,86,3,166,46,120,238,165,43,177,31,72,88,52,151,212,154,54,107,64,78,60,15,3,33,204,59,45,40,134,185,30,194, +61,228,112,138,200,168,231,71,99,224,37,215,171,204,182,3,155,55,7,52,199,240,50,5,148,241,183,240,37,42,23,33,42,45,159,164,203,251,211,173,92,26,182,220,43,228,149,251,104,112,202,68,178,126,227,5,104,227,18,232,100,133,205,147,30,245,211,187,93,225,74,95,245,85,18,245,225,167,155,253,28,31,18,50,131,30,255,90,49,31,122,129,68,77,140,157,116,35,37,191,100,236,154,57,61,220,70,171,81,45,205,178,91,40,40,206,201,94,6,26,231,28,11,234,221,167,243,247,153,242,217,157,165,239,193,230,182,73,183,8,97,139,139,91,130,58,77,163,37,157,210,162,249,74,110,136,4,176,246,19,137,97,44,193,165,14,171,107,134,14,245,209,76,155,220,45,243,121,37,51,213,155,233,30,146,237,208,248,8,76,199,63,141,180,236,14,4,168,63,6,138,216,32,68,180,191,232,177,215,251,213,125,207,135,90,13,98,169,18,222,50,218,168,106,70,123,160,196,46,122,203,160,98,127,0,161,162,160,254,63,155,169,166,226,46,232,119,24,242,48,203,76,9,226,118,101, +176,225,69,59,137,32,32,177,30,20,157,116,130,218,189,173,227,63,66,130,180,55,206,236,127,67,28,230,85,63,129,56,68,213,218,165,36,255,179,155,249,35,147,240,194,2,111,40,164,224,211,106,43,234,108,196,45,162,163,130,106,148,66,45,218,33,42,138,242,95,157,36,146,184,233,228,48,130,38,206,222,26,253,208,151,211,245,218,122,93,239,21,231,123,38,172,248,7,241,216,233,197,216,221,188,180,57,207,29,243,125,226,243,147,11,53,238,193,60,130,41,234,144,118,199,178,78,105,242,104,255,49,239,54,64,186,115,33,104,31,35,246,26,164,241,19,31,137,90,48,112,160,3,117,246,76,91,88,213,201,138,159,194,146,171,50,149,121,6,233,90,189,76,219,91,229,96,210,44,45,186,178,218,211,158,70,180,242,245,246,203,231,235,42,170,90,172,119,250,3,122,157,242,33,195,140,45,180,9,127,139,2,15,55,182,25,69,57,32,74,164,65,233,35,230,49,198,6,148,10,88,8,149,113,73,247,19,115,224,252,191,108,154,178,27,56,200,26,193,2,96,225,230,194,205,10, +140,41,132,50,105,108,163,38,235,240,111,135,215,252,135,192,203,238,239,119,66,123,107,60,88,93,110,174,241,165,92,225,30,179,103,156,17,202,241,207,10,86,132,182,118,111,183,203,55,207,193,109,6,131,178,208,79,232,248,116,63,120,2,167,133,254,132,60,248,75,217,163,111,208,47,20,58,216,50,85,181,26,199,57,67,93,105,63,245,21,215,165,106,119,172,185,192,209,208,253,252,14,237,223,151,254,123,111,94,92,217,238,185,243,121,189,26,143,211,250,114,166,77,189,202,181,38,117,177,140,54,186,40,201,162,185,14,214,124,92,96,223,54,175,214,42,77,99,183,78,29,75,87,47,64,142,95,171,167,166,70,83,169,210,130,172,228,116,204,163,217,89,107,16,92,31,10,14,103,115,145,143,252,179,129,236,27,40,62,221,67,128,66,6,25,200,219,200,51,180,81,194,151,163,181,181,53,184,163,38,122,99,245,20,176,181,81,224,33,34,131,170,191,168,106,184,133,125,82,127,4,1,194,37,65,0,132,135,149,60,35,122,28,73,169,145,128,137,69,169,38,230,234,62,43,102, +129,169,217,234,88,47,83,167,137,28,96,139,4,11,75,84,44,16,66,130,184,115,47,23,239,247,223,72,49,44,109,189,91,234,21,109,111,87,20,177,96,121,143,57,7,236,234,188,233,173,46,236,206,65,33,42,67,208,252,189,12,74,154,204,43,124,193,214,159,247,223,66,154,156,94,155,205,200,118,19,243,215,47,2,157,68,196,14,192,3,63,224,31,8,244,46,239,200,9,86,5,236,116,224,31,19,4,69,75,218,99,131,158,149,19,53,32,24,1,140,74,100,68,135,12,84,65,170,132,36,252,152,217,112,68,66,46,132,19,232,27,147,118,164,82,143,174,6,120,90,90,56,244,134,101,149,203,31,152,149,149,40,90,104,129,31,246,215,173,134,79,28,72,103,184,206,187,85,27,141,201,166,150,183,178,169,63,55,8,52,159,7,14,186,208,6,50,50,21,229,179,171,124,152,182,73,43,252,171,193,46,232,210,7,184,15,38,45,112,49,85,200,214,78,157,126,201,255,98,177,210,25,226,142,194,71,119,59,132,255,2,215,118,157,237,238,7,118,52,61,141,13,246,183,213,183, +248,233,81,163,237,236,113,75,17,7,135,191,249,36,182,184,235,107,123,110,138,91,28,207,117,203,48,203,244,174,72,7,164,216,228,26,63,165,160,213,174,243,77,31,67,135,193,31,217,175,177,117,220,189,175,91,224,202,70,109,60,169,73,30,4,152,212,189,82,224,28,48,241,76,176,19,213,52,65,203,63,131,74,25,62,46,219,119,253,195,126,143,210,207,234,107,187,240,125,155,239,249,246,57,184,118,184,218,235,164,220,14,109,6,117,220,170,23,115,137,75,0,147,189,91,143,103,18,24,167,160,97,240,182,220,243,12,56,139,150,155,133,41,68,6,156,54,86,41,246,6,92,35,25,233,52,18,234,206,161,25,125,28,164,170,199,180,19,32,62,122,120,209,71,92,243,144,28,97,44,74,37,56,166,217,34,253,151,211,21,104,142,102,128,107,34,120,205,202,218,114,209,230,57,15,220,157,177,172,109,27,14,156,179,17,210,246,155,202,98,75,230,16,20,239,48,52,42,232,181,15,16,250,112,36,115,173,79,204,200,194,171,219,127,5,236,133,165,121,155,16,246,74,69,208,69, +42,9,17,11,159,39,233,94,143,164,133,133,70,207,92,225,133,156,108,137,33,149,253,126,132,60,207,206,40,147,37,168,41,109,130,151,1,79,152,128,28,133,24,0,82,164,96,127,22,184,138,159,34,203,152,220,136,140,178,23,250,116,252,66,107,183,227,187,248,159,238,184,5,119,35,190,34,14,32,32,130,32,46,140,151,6,180,223,62,140,43,39,74,11,222,107,51,47,51,142,111,127,207,15,5,147,31,14,164,67,56,252,63,227,32,24,85,208,41,76,132,125,38,198,96,75,44,24,174,144,141,58,232,69,122,174,151,236,187,103,177,17,6,111,4,102,73,84,80,14,152,140,47,13,50,213,68,212,50,195,47,207,95,53,123,139,14,212,169,91,108,211,90,101,100,58,139,167,123,149,207,231,197,151,10,232,84,109,55,120,165,37,21,253,199,54,62,157,198,253,79,96,193,161,204,82,193,224,75,197,120,250,248,111,82,46,12,224,148,170,211,96,95,86,69,51,23,232,147,248,24,166,151,248,225,102,202,76,161,243,111,63,228,228,92,149,208,161,197,47,111,125,180,197,109,117, +245,5,57,160,234,231,240,177,239,178,65,250,229,94,192,207,44,109,223,214,57,146,122,148,129,77,97,149,107,194,119,142,127,119,105,167,131,97,158,175,213,222,55,251,227,107,96,247,185,94,38,211,14,14,159,245,247,184,91,105,38,113,253,109,132,10,228,211,174,105,11,204,107,210,106,84,103,231,170,224,120,45,5,246,100,110,179,75,241,222,105,245,120,110,28,127,27,226,119,101,63,223,199,249,126,184,182,191,221,123,112,47,225,99,54,216,46,89,250,75,179,61,58,173,89,222,134,252,129,216,16,42,169,194,190,11,82,160,211,146,107,93,22,240,139,75,87,222,20,103,94,21,127,171,213,98,106,193,241,101,18,164,16,88,108,233,191,11,200,64,8,72,9,111,19,151,129,26,33,187,186,211,95,226,46,143,28,48,245,177,135,92,174,57,244,92,180,11,186,75,106,31,243,12,149,173,93,180,142,112,174,107,115,103,163,3,124,171,188,217,94,121,37,65,230,30,170,88,37,112,150,229,54,214,182,54,218,113,110,148,190,141,128,83,139,117,81,45,21,86,80,59,91,88,86,212, +117,8,116,69,149,25,52,9,201,84,106,58,64,236,19,194,105,236,118,156,201,232,211,194,22,247,119,81,141,101,251,171,149,249,211,183,212,188,227,131,128,4,69,146,18,36,55,86,38,113,72,126,18,49,145,214,252,41,168,66,146,71,30,183,100,186,34,142,165,159,65,168,101,38,124,75,212,185,253,255,88,186,177,255,55,150,12,141,244,68,144,156,72,232,227,146,93,58,100,24,188,130,156,11,183,109,217,39,209,161,20,216,128,77,217,92,198,104,192,195,190,120,208,45,20,194,39,14,146,233,63,40,183,146,174,150,112,11,40,233,128,107,137,129,72,66,0,247,136,19,246,131,40,4,57,136,216,235,236,193,23,4,87,0,35,87,54,141,242,166,39,81,155,214,233,18,152,231,32,197,31,79,152,61,245,205,191,230,54,167,10,37,44,64,237,115,95,188,202,178,88,228,72,191,121,106,108,75,179,17,90,6,102,90,21,133,191,163,152,136,67,227,138,83,81,77,120,197,233,228,164,160,81,77,241,141,107,234,11,240,205,40,31,183,46,231,135,214,113,192,89,234,248,238,240,232, +57,211,39,177,196,5,93,166,25,220,62,245,223,148,49,10,234,190,167,1,153,247,229,143,226,20,39,111,75,28,96,166,61,141,114,159,225,217,238,246,169,111,185,91,92,44,59,93,131,247,2,174,182,249,85,186,184,155,107,228,121,56,143,55,92,45,15,171,113,123,111,231,173,24,68,137,58,220,137,194,170,121,110,167,214,243,197,104,192,83,241,159,178,171,215,43,88,144,39,159,27,230,243,70,222,191,7,253,183,218,181,124,191,139,108,228,251,157,93,207,208,45,178,170,117,81,191,174,57,86,249,180,75,52,248,227,193,168,196,48,141,15,199,55,171,242,75,125,221,234,98,223,102,249,248,231,193,168,90,89,198,184,154,213,107,42,55,158,85,230,134,102,52,66,58,163,181,137,21,64,198,209,195,29,244,192,187,79,105,218,67,50,88,180,161,215,169,142,189,233,206,79,21,137,170,214,58,52,69,228,127,225,66,65,69,254,169,244,126,98,123,144,178,222,217,206,22,65,136,1,247,197,152,233,56,112,247,255,9,153,75,63,71,202,75,140,15,86,126,89,165,150,181,8,49,205, +169,110,228,201,153,176,104,85,217,178,9,148,174,180,91,226,126,18,32,250,66,131,142,35,152,19,213,176,103,146,155,224,238,187,68,78,248,118,74,137,58,67,62,218,14,210,10,3,63,140,55,0,185,24,179,28,152,142,71,124,68,168,95,148,12,237,118,218,36,6,85,222,203,77,225,111,247,123,235,179,120,62,235,239,153,188,1,241,143,162,167,2,14,209,51,233,211,189,42,23,185,43,200,97,202,106,68,107,155,12,154,68,150,179,66,185,32,3,76,102,52,228,52,200,41,102,83,59,13,194,25,116,114,32,26,221,255,65,195,208,166,103,43,147,49,232,253,45,198,129,2,111,95,235,253,18,182,37,135,216,126,98,182,67,155,47,101,119,2,190,177,111,248,181,88,229,153,56,190,173,27,167,74,174,70,122,9,29,241,77,96,187,197,159,182,250,249,45,21,157,10,182,181,138,45,95,8,18,121,32,244,20,207,233,2,202,29,247,124,106,111,40,254,160,12,234,48,88,64,87,196,86,207,121,246,43,126,37,252,220,145,123,16,241,121,196,108,173,21,62,136,214,57,57,82,190, +189,141,1,87,129,235,103,248,32,193,179,2,253,157,229,228,3,135,244,165,78,223,254,38,56,124,112,178,40,184,221,9,122,172,212,152,12,190,222,30,160,61,207,222,82,35,240,240,118,150,115,248,149,148,184,255,253,2,74,140,23,250,175,192,195,130,64,192,181,102,5,101,237,118,161,254,156,30,155,114,29,244,106,253,247,194,253,206,202,207,103,113,121,150,90,235,220,110,103,228,251,52,191,217,111,183,250,93,98,219,222,239,91,127,31,92,243,206,182,181,122,235,157,221,156,230,86,115,248,146,157,8,126,173,203,173,117,224,153,226,112,246,249,188,26,254,166,59,167,195,55,45,101,112,225,190,94,83,39,215,161,189,72,109,76,101,10,27,152,57,154,120,33,57,0,72,35,248,9,8,22,128,240,136,210,28,247,227,219,66,175,80,221,173,244,111,179,41,150,232,66,175,11,113,105,104,83,151,44,117,125,13,34,215,125,52,47,167,189,71,233,124,46,132,200,179,42,33,196,177,200,29,250,28,150,134,209,138,206,191,7,205,132,188,10,183,168,243,164,71,201,133,159,91,90,186, +170,114,241,17,227,221,218,221,153,162,169,233,169,218,142,192,3,23,23,34,24,3,92,213,222,5,10,194,7,55,53,172,194,122,155,132,48,22,145,3,158,105,16,226,26,185,137,75,129,208,245,171,31,196,38,202,22,233,142,7,126,128,197,65,66,2,33,2,77,204,241,120,87,242,87,196,100,81,225,217,255,228,228,97,253,79,78,124,224,81,212,36,98,237,6,236,70,106,230,235,191,65,135,75,184,120,217,23,89,212,237,26,182,73,91,167,141,219,18,117,34,141,140,40,11,128,101,226,166,118,11,131,218,199,37,65,65,141,136,59,92,156,60,178,170,42,140,233,163,172,145,200,171,20,130,235,250,82,62,126,227,86,108,51,150,231,205,25,17,108,54,48,47,94,23,230,66,206,198,91,50,55,23,200,66,160,7,50,101,85,212,213,211,216,17,150,99,11,119,225,151,155,8,27,171,105,167,252,20,134,146,179,31,21,83,86,181,237,222,76,211,185,111,133,55,225,182,127,93,188,73,74,87,85,147,123,149,48,162,104,60,68,24,90,254,128,203,206,95,105,224,16,242,73,216,57, +161,240,168,225,238,126,39,253,61,13,39,0,229,3,46,236,233,39,248,65,3,78,236,235,181,221,251,185,56,254,163,36,222,127,73,67,29,222,184,255,50,184,245,0,25,127,42,229,161,187,229,219,108,119,107,180,63,29,101,85,154,190,5,95,222,174,242,85,87,61,201,106,185,73,90,30,68,81,25,146,40,173,150,236,159,154,247,253,100,189,31,215,205,183,182,75,242,125,63,213,247,114,203,252,222,53,225,183,198,87,254,62,124,225,125,117,75,224,123,95,215,174,59,175,197,38,142,197,224,234,166,95,107,148,193,111,242,27,0,218,235,251,125,54,123,61,158,76,243,251,110,114,184,231,206,141,108,138,28,178,86,162,149,205,122,142,244,148,251,22,182,190,171,88,148,126,117,13,253,208,162,227,117,156,91,124,84,203,245,99,83,62,20,44,214,76,45,174,211,108,249,51,213,181,194,252,172,80,197,89,80,138,30,202,162,61,195,96,63,227,29,158,123,114,79,89,111,130,166,3,55,14,13,146,159,176,0,97,10,4,129,158,189,22,136,218,239,79,31,125,254,124,26,246,183,87, +83,11,235,76,197,25,247,214,62,188,30,220,221,69,88,189,47,215,180,176,90,190,199,253,11,44,245,126,55,104,104,112,129,2,185,56,226,185,175,130,236,252,211,202,237,48,99,65,56,104,47,124,151,252,68,129,0,180,151,202,188,232,7,143,118,183,91,250,112,132,32,12,70,76,39,14,12,137,116,39,252,248,255,3,123,118,231,127,96,159,12,119,196,128,142,159,165,235,67,17,70,113,17,37,69,150,98,55,158,212,101,42,105,60,5,13,114,57,207,154,79,78,139,204,153,64,110,52,144,233,192,41,68,179,9,243,176,157,154,27,229,91,108,160,27,114,149,201,88,166,142,223,134,245,219,154,243,246,73,127,170,4,172,255,46,25,100,181,114,90,101,171,209,68,84,223,187,113,190,90,30,33,55,133,219,146,201,52,240,38,153,6,89,175,14,254,130,218,9,197,228,37,189,82,172,39,78,178,95,224,156,227,229,254,57,28,95,252,202,47,47,162,224,156,55,183,171,134,71,32,66,181,212,172,239,10,89,228,100,103,114,87,120,67,235,59,230,21,193,114,122,15,200,6,9,98, +65,129,44,222,7,56,218,119,22,121,241,128,185,2,92,150,177,214,251,48,159,163,211,19,198,181,15,72,15,196,115,152,201,120,72,16,194,17,116,246,238,172,187,253,175,211,75,220,116,179,46,94,55,187,233,104,121,231,133,207,167,199,94,21,201,175,200,250,150,170,44,92,243,201,102,63,166,182,214,223,111,143,240,125,226,207,239,23,86,206,127,95,63,252,63,120,43,13,122,161,95,93,232,122,211,127,191,3,247,212,105,117,90,190,26,251,37,123,244,5,159,195,29,223,245,15,120,121,110,31,87,187,222,7,17,220,108,123,212,117,248,158,41,94,87,163,195,51,149,214,206,120,30,53,148,184,145,146,38,100,185,54,61,153,10,224,237,204,217,204,202,211,193,78,137,16,77,80,89,128,228,184,235,162,64,75,173,254,108,90,140,101,95,9,52,224,110,137,212,220,133,54,27,186,177,61,51,89,113,194,65,97,187,43,88,178,191,232,125,237,175,167,220,145,39,174,8,145,133,197,206,228,226,139,77,55,192,161,184,129,253,61,58,70,163,130,1,212,59,48,54,185,249,213,209,133, +21,6,233,255,133,222,192,238,22,148,161,39,151,170,60,79,8,140,203,43,35,107,228,53,91,109,119,186,23,3,242,111,55,160,251,25,114,35,158,25,33,235,15,5,245,32,12,65,49,152,126,11,16,213,188,34,120,231,3,47,113,40,59,99,148,37,122,53,73,208,12,102,223,11,49,255,178,248,127,81,252,242,47,139,255,23,197,7,136,16,31,103,187,214,193,217,24,54,15,6,217,238,160,55,220,227,129,111,23,15,203,77,228,32,107,72,166,10,55,109,59,244,37,232,250,61,67,216,15,97,123,200,67,141,184,147,144,46,228,240,164,70,172,123,171,33,11,173,210,122,219,135,67,36,90,163,89,171,86,25,10,90,21,88,105,90,199,73,49,138,2,142,91,17,44,150,255,18,112,148,212,11,10,33,78,33,233,162,190,97,161,96,109,235,188,58,128,150,98,240,247,47,98,25,186,192,119,222,133,195,56,65,11,231,205,222,191,236,223,16,148,210,251,74,172,230,233,68,121,249,58,209,14,114,66,62,101,28,129,58,13,174,67,137,62,130,92,31,68,149,28,224,75,15,69,168, +193,93,127,55,74,243,175,9,240,57,191,176,246,31,121,124,6,33,188,32,2,124,33,130,97,207,178,79,125,157,190,46,23,188,80,169,251,95,210,13,111,48,5,3,249,227,172,247,105,219,180,127,228,164,171,82,177,93,74,148,214,160,190,195,132,215,126,245,26,63,114,61,250,111,116,203,232,124,31,195,207,247,59,170,158,54,159,229,247,241,254,62,255,132,179,33,95,29,215,196,227,98,119,255,28,156,14,255,47,5,222,243,162,22,131,189,4,118,249,252,156,93,227,68,117,109,123,247,149,231,252,51,143,25,16,97,16,66,148,126,148,43,133,85,193,132,197,173,136,96,9,30,144,115,151,79,11,39,231,39,216,221,224,43,35,241,30,210,180,202,36,103,77,176,135,155,180,117,177,150,81,103,47,110,118,172,165,40,104,238,227,208,148,213,98,157,222,5,34,95,244,104,53,215,159,142,230,123,240,213,94,206,122,219,221,248,219,25,2,152,253,184,13,85,35,130,12,152,145,168,213,200,151,153,242,202,217,246,22,31,156,248,236,158,137,18,100,157,12,97,104,3,146,89,123,8, +132,200,198,74,235,228,5,9,61,115,147,115,78,244,116,244,54,96,45,172,135,177,94,43,122,127,27,245,199,192,167,250,18,144,81,124,204,19,16,159,119,132,48,68,192,169,239,129,12,174,68,15,185,251,233,205,204,137,241,159,178,155,223,18,142,96,225,31,143,71,251,251,210,253,247,209,66,214,242,106,198,17,247,159,185,253,72,207,237,113,220,62,140,136,70,81,233,254,18,179,102,130,144,156,129,16,170,131,33,246,55,130,54,153,29,167,32,13,253,31,151,184,31,36,97,200,69,4,162,36,11,195,246,43,226,43,164,144,201,219,96,119,255,36,8,0,73,156,162,5,71,84,251,32,24,2,166,22,153,147,97,73,229,37,72,150,223,110,229,92,158,147,133,56,56,180,84,51,207,87,188,122,127,69,56,82,234,52,246,97,174,51,6,184,202,158,214,101,77,36,88,136,127,241,8,58,223,81,150,31,202,249,220,163,156,177,66,167,49,232,36,23,122,245,19,158,22,130,59,131,165,92,88,38,223,206,239,129,44,123,155,50,229,227,230,215,1,97,18,214,123,207,147,219,109,15, +56,221,251,120,185,238,75,3,140,60,128,246,129,103,243,255,123,221,74,140,13,17,83,189,221,124,46,93,119,250,60,26,220,218,50,163,163,84,164,153,74,85,94,45,222,107,149,234,238,19,120,92,133,247,144,141,61,150,237,208,252,223,117,254,125,127,190,33,215,171,207,174,77,85,170,163,125,223,233,232,208,165,10,199,219,249,59,121,238,95,51,65,139,7,25,115,228,49,30,228,244,130,134,23,101,215,253,227,248,220,205,175,207,219,229,237,46,206,91,35,74,92,46,147,91,152,85,109,110,108,172,42,192,5,44,91,69,26,218,33,221,168,70,187,99,241,47,201,198,64,174,254,212,72,85,234,101,195,109,44,190,139,21,169,9,71,69,149,102,210,32,149,176,248,251,197,26,123,221,143,225,203,251,227,242,247,173,45,97,191,58,251,231,116,245,104,181,103,162,55,86,218,160,234,82,68,253,93,30,53,228,124,244,244,87,217,252,49,190,33,243,74,217,62,123,209,162,210,2,156,37,240,174,113,130,71,40,14,199,214,208,230,36,5,109,36,107,119,39,35,106,154,22,172,156,50, +91,221,186,144,232,236,199,230,212,251,69,134,252,99,163,69,9,250,98,105,38,33,1,8,196,132,188,216,157,1,4,137,9,130,54,1,2,194,100,245,185,152,135,16,67,67,94,134,97,232,219,197,253,175,118,244,193,255,87,59,98,229,59,76,253,187,121,50,94,21,159,127,145,15,41,238,220,44,161,16,198,201,0,89,227,133,108,6,114,199,146,59,1,20,102,116,198,52,49,145,169,252,65,142,199,37,141,202,21,187,107,147,29,221,36,68,141,0,229,98,113,17,17,47,41,206,144,190,17,154,96,237,62,128,108,79,200,20,44,138,173,117,94,248,252,208,13,97,214,27,252,3,81,136,80,37,38,50,142,147,104,113,220,124,80,10,233,241,1,96,73,92,124,61,192,116,231,149,201,211,184,110,96,49,75,56,94,165,112,82,93,128,248,192,10,81,105,203,139,6,101,231,103,188,116,225,122,110,202,73,143,28,237,165,244,166,138,27,189,192,60,31,218,173,42,32,168,207,135,190,13,118,145,79,255,129,118,22,218,243,55,200,211,42,218,25,200,75,213,235,129,239,219,221,76,149, +125,143,111,172,106,128,27,249,118,37,187,156,41,52,41,156,184,249,244,179,34,180,180,43,5,227,17,84,233,191,116,232,242,70,181,25,41,2,247,215,238,123,83,254,222,7,246,249,182,11,126,111,186,181,236,181,121,92,204,78,46,13,94,82,175,125,73,184,233,236,68,97,233,240,195,55,241,190,175,255,60,94,26,175,23,223,225,117,19,120,237,24,250,149,214,131,202,114,96,153,93,239,77,119,71,99,108,20,193,63,83,71,93,113,92,130,141,44,29,205,172,2,128,161,167,167,173,139,210,78,14,73,202,157,59,21,114,37,124,178,221,46,104,219,33,228,38,179,212,201,13,14,212,213,148,111,83,135,216,148,181,45,124,153,60,226,110,44,101,251,81,175,112,241,101,212,224,127,74,149,223,66,248,36,215,24,177,31,117,109,55,150,252,152,175,115,36,157,187,174,156,248,221,32,170,227,88,175,114,61,43,36,170,254,10,234,253,50,146,177,178,149,61,227,139,123,6,7,214,88,71,47,113,216,84,231,102,109,51,127,147,71,219,168,20,109,212,63,122,22,149,181,142,252,185,89, +63,213,153,23,255,130,242,143,143,21,198,39,144,166,201,196,7,100,102,52,240,164,97,14,64,172,214,251,0,251,193,240,81,168,235,129,1,136,129,213,124,34,138,71,154,245,183,255,167,165,255,164,100,255,167,165,255,164,228,127,16,55,63,140,61,48,11,163,165,223,183,170,173,53,92,68,72,54,182,224,34,93,207,195,153,252,169,95,151,135,7,228,31,245,195,195,94,120,40,152,58,235,82,46,22,219,220,174,139,79,127,253,91,124,251,248,205,93,94,214,141,208,114,139,138,157,25,222,226,137,207,107,196,135,223,135,130,196,178,241,96,199,158,81,115,251,58,57,92,173,190,248,17,5,248,72,136,102,247,5,177,38,128,154,157,231,231,161,91,216,91,87,48,134,8,196,48,40,90,46,144,160,74,47,194,140,250,129,41,74,90,160,238,4,64,205,123,54,83,48,149,135,209,185,233,31,152,43,170,104,203,205,188,62,36,12,194,194,5,158,189,0,239,110,153,230,191,1,120,201,178,212,139,131,222,131,167,198,237,66,200,44,153,149,237,242,119,123,190,141,185,250,166,175,178,138, +52,162,3,82,245,123,236,94,239,158,241,160,226,112,251,116,167,34,150,202,11,142,63,245,134,165,244,153,43,228,246,105,154,33,153,123,59,139,184,208,39,100,3,253,87,34,102,82,70,212,187,193,202,181,134,223,203,214,28,35,31,182,149,194,231,52,239,244,46,139,80,97,241,124,148,114,151,101,87,251,50,7,175,214,59,81,139,47,142,84,191,199,226,178,190,180,30,27,246,45,85,219,209,117,153,174,150,223,85,243,123,45,57,126,135,137,217,186,190,195,112,2,29,52,217,74,168,91,79,158,146,4,232,3,71,114,52,53,154,153,244,12,29,89,75,209,53,81,28,40,152,26,117,57,245,152,107,61,99,34,82,27,53,94,220,130,83,66,161,20,134,34,171,210,63,173,201,146,224,130,26,27,118,241,51,152,127,222,95,231,119,181,58,235,116,55,147,207,173,237,94,186,52,111,29,130,210,29,74,238,77,188,42,43,136,253,167,160,146,122,41,56,86,84,156,75,126,54,73,225,148,0,193,18,180,42,237,103,16,114,216,79,95,163,116,117,45,82,29,177,17,4,115,62,176,116, +23,164,6,174,211,179,62,144,3,110,183,243,236,2,124,62,167,244,207,65,247,101,28,187,24,166,43,11,83,135,214,9,106,198,36,74,194,0,200,32,168,191,248,9,115,47,45,42,192,216,141,250,57,25,2,65,134,246,67,209,233,191,154,178,37,255,95,77,57,198,255,127,77,233,14,52,37,37,65,36,136,65,3,140,103,140,233,110,199,234,248,21,64,236,143,87,214,135,155,196,6,118,185,133,138,159,58,108,3,87,214,246,81,48,101,203,185,8,49,165,35,101,57,199,49,36,243,255,72,175,1,4,110,110,12,255,101,170,226,34,140,253,81,154,106,41,240,43,237,166,241,16,192,132,231,107,68,22,229,172,64,25,194,112,32,8,147,69,137,60,160,110,252,231,96,211,215,52,83,94,134,149,48,185,18,138,8,200,153,11,60,68,209,29,232,192,42,176,61,42,237,76,228,148,6,65,168,130,10,153,148,41,165,67,66,70,35,32,205,235,234,225,96,207,192,255,22,83,70,13,216,15,36,194,22,166,237,92,46,138,233,146,61,107,49,253,216,75,135,10,15,170,194,231,202,161, +117,241,36,246,144,56,8,169,131,66,13,237,236,103,211,206,125,200,135,164,21,253,140,69,208,208,166,100,210,70,10,78,179,26,197,228,96,170,125,40,230,240,96,118,51,177,144,107,152,174,121,11,173,209,135,245,236,105,63,233,40,62,50,75,71,40,93,86,27,22,116,106,108,80,64,129,94,221,227,98,164,178,186,115,220,48,241,149,112,243,160,206,3,116,231,114,117,167,254,15,87,125,150,172,174,102,132,55,121,120,173,45,45,157,249,79,58,28,191,81,173,204,24,48,153,131,90,128,219,139,226,161,2,161,14,5,206,104,243,237,115,97,100,42,103,11,175,3,73,77,95,236,45,72,75,161,42,67,246,33,255,61,255,97,190,119,168,219,226,248,237,168,126,131,225,251,109,149,62,22,138,239,193,27,250,126,57,157,163,216,102,165,77,57,221,226,136,186,183,52,75,98,168,211,244,128,38,220,240,46,111,121,182,157,85,249,11,11,180,218,11,255,89,246,159,171,170,105,173,222,63,47,168,51,63,27,10,247,103,232,87,206,129,24,215,229,249,102,143,228,92,195,130,84,215,181, +159,109,192,83,232,149,246,102,24,47,202,50,91,50,38,17,34,177,113,143,201,21,221,160,23,13,69,192,234,30,64,82,184,14,169,249,196,165,22,196,94,23,121,199,179,201,233,246,255,45,164,152,31,253,255,22,146,37,41,18,38,12,229,175,246,158,99,5,208,49,84,2,139,72,164,69,86,165,154,129,14,120,223,40,150,235,205,41,185,116,234,221,90,126,5,193,179,36,43,11,243,115,79,243,83,59,121,215,34,7,49,8,93,216,97,93,16,12,156,132,94,240,119,227,46,224,228,33,249,44,72,48,112,168,112,76,34,90,178,65,194,38,137,181,17,215,145,51,206,224,232,7,34,10,182,100,173,39,0,90,92,93,46,1,133,248,40,183,114,175,48,244,132,31,54,23,194,243,115,161,103,142,225,144,30,132,21,228,217,153,82,52,7,146,15,228,68,6,214,50,39,51,115,15,64,143,50,252,169,133,76,156,25,81,244,37,80,182,205,193,158,143,201,140,92,22,17,220,153,92,138,153,133,242,41,26,234,201,17,167,155,62,189,115,88,211,187,102,16,168,79,88,234,95,166,196, +178,105,107,8,69,16,118,89,211,117,223,160,3,67,244,221,117,128,2,130,103,174,163,34,42,202,37,198,151,214,215,145,113,149,229,10,89,156,237,137,150,149,217,133,227,216,145,161,202,134,206,83,25,137,173,70,103,211,14,195,236,239,198,225,7,241,99,17,39,159,74,226,222,44,219,126,166,130,42,233,66,163,92,234,114,108,167,19,147,114,156,79,170,58,132,133,116,230,232,170,103,164,220,81,132,201,228,37,137,62,160,246,230,139,20,122,104,76,98,112,231,130,4,67,183,151,57,107,134,205,103,31,191,4,90,14,183,84,143,75,6,235,193,201,8,59,37,173,31,52,98,30,152,218,40,9,223,46,219,247,228,190,125,191,236,239,157,64,248,220,80,221,243,22,70,87,10,72,21,201,223,98,184,141,182,53,113,122,86,117,156,224,216,175,162,221,220,33,76,80,144,252,25,4,41,200,207,154,52,234,252,47,0,102,1,129,198,217,133,92,231,183,80,6,11,107,248,120,4,218,177,0,129,126,111,200,59,84,123,217,226,63,169,197,27,29,178,52,42,147,9,137,72,102,228,228, +250,124,192,204,13,13,220,189,136,52,40,6,66,20,158,88,73,143,115,120,240,195,191,94,227,106,120,21,114,86,220,39,142,102,4,100,62,72,24,238,207,192,23,153,142,224,32,129,165,191,208,120,112,57,47,196,179,5,100,222,22,0,208,73,101,115,238,138,74,66,102,119,127,147,64,176,132,29,242,53,112,195,178,130,211,103,111,190,176,225,66,243,240,144,117,90,54,233,43,49,10,101,227,44,254,195,197,186,177,38,77,101,32,89,69,173,149,46,28,42,2,154,153,92,222,52,247,115,104,106,210,22,214,102,140,244,254,224,135,242,216,117,13,102,86,196,101,27,44,237,66,1,113,8,215,26,225,130,69,113,243,237,233,72,223,224,205,189,128,155,160,48,149,159,7,221,66,242,250,86,71,52,211,243,162,88,122,53,252,197,198,18,173,8,203,22,42,224,47,200,148,168,132,135,144,32,38,88,225,151,167,235,26,32,232,110,166,22,163,173,52,128,133,11,2,248,194,114,187,126,236,102,157,93,197,74,170,166,11,56,43,130,229,29,221,51,184,134,16,131,55,187,131,136,26,68, +139,222,171,175,143,233,152,206,122,126,167,114,73,115,56,40,171,193,52,215,250,57,58,236,171,148,40,79,95,175,12,173,180,159,191,215,57,43,203,0,38,86,80,19,199,244,99,175,204,251,35,0,171,126,150,81,7,97,54,36,165,172,3,227,94,28,185,88,144,161,178,45,57,212,162,195,238,76,1,18,232,215,213,103,163,121,49,70,101,204,7,144,108,65,26,49,25,13,154,149,253,183,152,39,128,187,136,151,89,87,18,101,186,118,100,111,107,51,237,131,17,85,145,30,220,118,137,218,248,97,109,180,191,63,227,239,204,120,103,222,218,215,192,251,110,25,92,4,239,184,90,108,19,14,104,218,72,166,131,228,214,80,136,15,16,147,247,210,241,126,84,107,199,150,103,119,171,68,101,233,104,20,107,219,36,191,238,191,218,107,65,119,157,23,40,52,132,249,223,202,2,188,33,251,26,99,71,85,202,148,104,62,144,32,61,36,38,36,221,198,157,205,134,187,110,200,82,248,202,12,119,168,101,1,66,157,221,75,11,70,172,88,177,75,142,2,2,196,0,52,36,78,17,40,14,241, +155,85,89,14,61,203,103,253,45,253,87,38,30,69,83,112,136,3,98,12,246,144,161,23,35,22,186,4,133,254,151,98,20,4,220,120,20,151,192,61,14,32,72,224,26,80,68,148,204,3,51,16,19,42,221,77,92,247,182,37,251,40,6,217,191,238,206,18,154,79,199,45,19,91,222,74,52,217,105,181,117,244,120,74,116,195,104,241,216,183,208,106,43,50,211,200,221,233,161,63,152,206,10,17,145,217,77,174,195,162,224,38,216,107,218,166,133,153,228,165,199,236,206,156,236,17,154,10,86,190,118,159,34,55,28,234,91,70,162,101,27,105,216,132,73,89,20,164,253,12,147,55,129,200,103,101,56,116,29,132,240,8,178,22,160,12,74,94,136,48,54,191,125,7,107,131,184,3,130,138,213,169,215,246,237,112,47,178,67,104,54,255,173,56,77,215,21,216,217,216,205,70,118,165,178,251,60,142,223,247,161,165,251,82,59,180,10,197,67,120,90,219,199,242,43,251,78,245,196,40,207,216,63,121,171,87,111,71,167,233,26,204,149,103,54,254,134,18,42,105,55,167,152,185,127,99, +46,107,19,103,22,242,137,71,42,123,14,251,223,49,45,246,56,33,1,81,145,205,122,57,42,140,150,128,105,169,5,47,214,59,4,184,28,14,125,121,24,90,159,233,79,227,152,213,206,149,102,35,59,27,144,36,123,117,130,0,22,112,163,183,155,110,224,203,206,197,174,196,57,93,168,75,116,123,244,164,93,162,81,74,229,119,14,195,225,119,90,154,53,118,174,137,47,110,25,56,219,89,112,205,163,52,220,224,45,108,214,186,23,215,46,123,181,242,183,31,62,95,100,251,120,62,73,43,212,100,36,80,187,196,4,144,83,232,140,116,141,4,221,125,101,83,33,63,139,168,187,244,165,227,227,152,23,242,39,39,196,48,32,134,148,23,130,128,129,87,66,243,67,168,89,40,40,174,170,92,50,192,246,96,85,117,116,172,50,5,177,121,189,18,242,235,164,215,93,118,247,211,36,254,175,89,247,126,110,252,60,243,4,255,21,150,175,118,78,158,178,125,154,217,157,173,45,123,111,106,242,150,235,230,60,83,158,169,189,31,92,109,169,37,81,86,223,180,186,181,221,148,101,223,238,86, +1,32,114,34,64,228,68,36,130,200,68,206,129,136,36,34,137,28,73,144,0,65,34,131,32,18,9,16,4,239,11,178,91,146,165,110,121,238,106,230,110,187,186,128,23,239,251,62,225,253,60,207,251,132,183,59,232,181,18,36,39,9,109,24,165,55,147,67,145,213,122,27,70,202,58,184,230,238,240,118,42,34,11,174,51,208,137,37,127,123,124,119,182,136,48,214,3,35,16,97,174,21,114,164,27,31,84,43,134,228,1,84,187,202,236,186,112,181,213,3,221,26,97,107,119,211,175,227,64,82,27,232,27,244,185,137,132,101,99,137,85,51,173,210,181,179,253,45,174,7,197,137,212,149,119,77,75,50,201,105,210,247,171,181,136,49,83,245,25,8,91,153,226,165,62,193,138,154,132,140,62,79,44,23,54,112,88,81,238,76,176,202,106,68,252,148,115,38,72,101,52,229,161,4,217,117,37,220,213,103,18,121,66,11,150,83,158,94,158,161,139,10,177,188,96,216,146,152,183,214,11,58,106,108,216,199,176,61,236,166,81,106,225,173,122,24,3,20,165,135,196,129,20,130,94,208, +224,221,134,151,169,70,151,66,233,243,16,54,207,225,219,23,234,6,6,17,197,198,160,248,227,56,36,43,219,22,77,177,172,115,93,177,62,91,237,146,65,251,185,142,171,14,62,86,78,245,149,120,139,86,207,28,158,159,106,101,225,235,46,59,163,201,83,252,105,69,4,116,196,96,171,247,114,26,157,82,217,56,0,53,93,109,105,124,47,64,182,37,82,8,35,178,49,185,225,70,52,102,62,233,22,163,212,196,80,103,120,242,33,35,197,204,197,229,117,80,133,128,59,146,122,182,18,196,90,56,79,133,54,192,53,58,218,87,246,178,175,103,87,253,51,76,157,173,34,10,131,200,138,196,30,167,82,112,218,163,110,54,194,105,22,152,182,42,22,110,162,182,187,187,102,73,88,27,147,164,132,197,220,158,221,143,17,247,7,186,237,227,219,91,181,211,177,109,57,102,31,14,156,202,181,35,145,174,108,90,183,208,79,183,216,243,117,230,29,204,29,113,158,136,143,145,141,164,138,86,197,80,156,2,157,197,77,24,8,114,231,113,101,136,231,174,207,102,68,40,127,128,131,175,187,218, +213,150,181,24,207,199,209,145,248,200,210,176,226,233,226,129,173,98,104,142,200,151,170,40,222,214,184,11,178,55,20,193,60,35,59,44,233,209,106,133,231,76,136,140,218,174,221,185,179,241,46,85,103,236,92,222,237,179,233,99,66,195,111,240,178,99,62,208,13,17,77,244,109,46,254,129,94,200,125,245,15,244,247,175,130,200,11,42,12,156,234,177,110,3,221,112,21,83,49,250,123,215,236,12,54,3,26,172,67,3,104,36,89,77,182,169,55,147,170,93,20,133,96,214,20,160,152,54,136,106,240,237,179,175,219,62,146,147,166,132,51,173,101,114,66,201,196,109,81,119,242,6,11,233,104,151,15,173,168,176,89,91,60,180,83,172,215,175,116,163,253,2,208,124,182,108,101,199,58,25,115,233,130,158,32,124,103,10,153,52,153,135,179,164,40,243,236,20,23,110,69,176,135,81,127,218,87,138,34,206,91,141,138,227,168,115,208,163,160,85,134,138,210,79,106,145,98,109,207,165,184,103,192,228,44,215,104,207,33,104,232,130,12,72,98,54,3,218,230,109,114,194,32,140,21,132, +42,98,85,199,2,33,239,180,135,69,206,80,64,67,14,55,148,76,13,191,43,81,161,246,169,14,87,108,0,206,131,93,108,199,234,113,133,38,89,29,12,92,174,200,152,165,80,232,18,84,184,138,141,52,25,245,188,85,178,208,117,17,40,137,39,74,88,176,229,195,129,99,65,104,252,102,45,132,100,121,2,177,158,235,144,176,14,81,147,41,158,92,121,182,110,168,209,54,205,98,145,133,42,14,218,121,106,118,56,179,6,161,239,239,10,9,66,47,237,248,118,114,218,149,204,246,52,122,59,183,49,180,29,29,55,224,78,205,104,104,144,69,172,85,227,186,86,67,17,143,217,24,92,198,103,20,89,179,118,171,56,156,53,140,183,77,220,210,248,156,85,154,181,111,176,133,227,9,147,135,164,152,125,184,235,153,200,81,188,93,103,223,225,153,119,74,60,227,14,207,185,235,226,240,119,6,254,49,51,80,32,36,175,241,53,185,246,32,31,227,236,110,12,231,64,87,113,130,158,174,38,32,45,31,38,21,223,46,245,79,46,103,204,232,110,252,172,189,77,62,222,196,208,184,254,230, +118,9,107,189,85,29,178,78,29,142,252,13,141,84,224,86,231,155,232,233,214,198,142,241,72,211,224,96,199,153,163,12,189,113,97,35,202,214,244,228,254,245,25,182,44,109,204,101,30,212,201,125,231,141,56,232,236,164,87,13,32,74,227,4,81,150,49,195,56,130,176,231,198,95,195,245,96,63,74,116,129,194,132,135,16,30,107,202,131,112,220,248,253,216,157,173,151,210,182,105,61,23,62,152,162,187,90,167,201,6,1,184,66,60,48,31,110,175,108,192,40,231,234,252,228,134,164,180,101,216,154,166,8,75,110,117,207,14,149,107,67,162,2,183,233,226,220,160,154,129,28,214,28,109,32,211,187,145,169,111,219,177,7,50,109,244,90,82,183,42,2,131,145,140,174,34,249,56,2,141,230,14,49,60,222,233,86,132,198,202,180,249,149,48,46,215,64,247,196,81,133,162,98,192,73,202,141,19,140,126,6,245,41,224,129,114,215,117,197,93,179,243,154,80,94,235,116,70,173,25,216,201,180,154,213,198,141,224,251,65,41,212,179,138,103,91,51,151,245,34,81,18,190,155,192,56, +158,92,92,224,142,5,224,114,150,162,234,172,34,54,186,57,84,155,7,210,9,144,149,27,12,27,90,39,58,232,124,58,217,86,57,71,114,78,76,166,204,30,193,30,234,179,214,41,69,2,219,163,110,129,204,181,44,221,230,203,81,52,251,56,53,6,203,140,34,131,19,79,152,46,39,157,217,177,113,176,16,173,247,186,146,246,112,188,142,29,54,236,214,155,203,126,119,95,238,171,203,165,206,243,77,127,87,170,136,102,181,98,165,210,82,100,53,219,8,83,197,56,72,80,196,101,102,175,166,220,2,67,142,106,54,235,64,52,176,218,167,77,163,202,118,228,181,41,185,24,37,134,236,66,211,82,12,55,73,197,163,247,64,6,130,240,142,95,217,189,131,236,53,135,7,69,16,244,86,179,85,106,51,204,182,3,166,111,160,8,28,19,121,200,210,233,154,203,122,5,118,215,219,82,88,236,4,113,98,196,157,131,73,61,35,190,38,188,171,141,19,164,99,115,130,70,155,207,228,245,137,32,205,46,81,139,182,4,61,205,29,75,250,187,82,27,250,226,136,120,122,200,200,112,4,221, +82,231,234,74,54,191,50,229,75,210,162,205,176,63,54,197,47,244,167,122,33,32,157,183,229,104,204,33,215,57,46,255,160,115,180,227,191,65,240,111,219,240,171,75,126,177,80,118,229,14,43,113,48,127,164,100,228,201,10,2,79,185,6,90,53,168,163,160,235,104,3,54,246,66,97,231,53,32,156,192,2,101,130,167,60,188,26,95,83,161,44,47,222,209,134,200,80,68,65,108,195,205,223,69,91,78,164,231,162,164,124,131,89,142,87,105,251,195,30,12,107,138,31,5,225,189,45,11,90,151,207,147,68,134,110,158,78,178,104,24,29,222,150,238,86,112,81,54,211,56,173,92,5,161,194,249,42,13,23,177,200,76,158,26,80,157,200,161,14,201,87,250,5,109,116,57,1,47,174,165,102,137,219,29,121,150,135,61,13,163,189,19,37,7,13,65,194,70,113,5,10,85,65,20,83,112,208,86,140,8,89,71,92,36,16,18,18,4,98,117,131,173,99,232,200,155,67,199,15,28,118,183,251,98,83,197,208,183,181,160,42,44,97,58,153,157,107,7,14,23,168,158,199,195,133,215, +232,93,222,161,154,203,160,218,82,158,249,154,95,57,140,172,79,90,116,10,33,106,148,48,65,72,8,1,57,119,123,145,172,67,40,51,188,205,87,123,106,104,185,37,167,150,227,108,37,185,174,69,177,149,212,58,27,170,98,97,111,237,145,145,142,178,25,75,66,78,148,251,18,153,93,151,117,31,214,175,187,187,6,234,56,176,175,78,23,114,164,169,179,34,59,216,219,134,248,79,172,105,107,155,22,220,107,183,39,202,84,88,52,202,6,173,67,26,159,223,197,103,82,235,92,181,25,122,141,15,224,124,117,46,74,98,131,78,174,14,64,230,131,219,163,245,235,196,41,188,149,82,96,20,169,192,109,151,218,118,109,92,29,166,97,39,55,56,41,5,201,141,244,170,136,137,249,16,171,18,158,113,118,102,13,133,104,71,75,59,46,200,85,199,156,17,109,163,159,230,25,28,200,17,141,120,169,149,106,143,167,153,112,113,118,105,209,149,154,54,26,51,58,79,28,57,161,54,16,143,150,82,195,18,222,186,167,182,134,187,170,76,73,181,162,89,84,62,0,175,117,110,25,211,67,231, +237,24,191,118,81,220,155,11,185,89,171,255,140,140,68,235,207,90,224,233,0,180,95,70,51,8,16,9,191,67,64,7,87,55,128,115,102,92,185,88,101,174,25,233,188,82,22,62,113,77,245,37,121,240,225,204,187,207,37,195,46,139,85,132,49,233,114,93,39,214,249,177,50,213,13,187,113,161,38,176,131,243,115,58,171,188,15,55,219,164,93,177,153,114,178,113,14,233,84,164,27,251,44,147,59,53,218,98,93,213,172,70,113,24,131,167,155,42,39,178,48,111,2,171,175,41,173,133,233,245,62,83,172,4,41,177,35,33,113,23,69,28,187,114,224,88,1,82,133,167,182,55,197,35,66,9,2,86,130,173,78,229,148,92,129,108,221,18,132,231,222,212,42,116,14,39,199,232,235,102,111,198,175,134,187,67,146,208,132,7,98,88,111,249,131,249,30,93,127,237,28,236,176,29,66,230,129,221,4,1,185,130,200,245,253,243,192,57,52,210,132,51,65,16,59,105,218,137,161,49,231,243,109,16,238,14,219,60,22,149,232,142,75,233,166,250,12,115,8,145,142,161,138,25,73,199, +1,145,252,248,204,161,32,216,138,9,52,61,208,120,213,234,44,16,211,104,183,124,203,102,176,132,57,110,150,245,164,9,41,91,207,179,152,16,245,18,147,103,31,110,51,252,164,220,112,112,110,147,243,14,133,155,13,35,58,11,22,79,108,212,86,107,83,84,65,193,181,134,44,233,88,76,93,103,73,129,30,238,156,120,211,158,40,40,219,197,139,90,233,240,24,53,93,71,23,80,73,226,36,88,78,29,19,78,239,118,247,238,214,176,199,183,73,92,133,208,134,238,76,104,150,57,12,228,185,61,195,8,9,190,75,97,162,182,10,164,121,58,221,228,142,241,176,215,106,39,200,166,216,139,55,205,100,233,213,70,223,147,209,57,11,210,227,122,136,54,236,233,201,170,104,148,118,64,29,139,148,119,103,23,35,167,118,72,43,118,48,94,220,216,19,63,22,232,27,52,130,13,196,49,158,135,2,166,61,184,173,61,97,114,251,42,134,73,68,184,222,98,14,167,64,196,208,29,116,146,221,187,30,87,8,120,135,141,107,245,95,158,65,145,24,115,145,187,115,221,240,33,138,243,202,198, +58,149,100,102,108,186,82,182,160,45,152,136,86,174,199,76,67,146,183,59,43,161,7,33,41,235,128,51,110,55,55,189,237,30,215,210,6,153,243,185,168,88,224,156,198,115,169,114,48,20,221,194,81,198,169,66,146,212,0,243,214,29,68,255,208,151,0,111,78,157,54,225,201,102,55,32,17,162,60,240,160,79,222,35,168,16,140,19,27,50,57,171,182,89,46,84,121,183,74,87,201,179,28,50,186,63,180,110,231,177,29,251,41,142,180,78,209,96,116,70,65,32,62,135,174,145,137,48,221,56,82,64,181,182,54,234,113,34,56,195,225,79,243,135,122,141,30,5,11,163,14,198,116,44,221,28,107,19,116,164,168,194,213,142,58,135,205,48,11,124,178,49,239,106,116,24,162,160,3,213,179,207,90,140,96,131,193,36,40,155,32,62,57,226,209,95,230,5,163,115,163,165,223,192,33,6,231,42,34,94,104,197,70,129,250,22,4,174,185,113,69,16,150,110,36,193,47,74,27,28,109,38,66,55,244,170,160,10,23,231,213,109,159,136,233,190,208,166,135,140,73,117,66,35,80,176, +102,200,202,108,17,247,252,166,186,47,198,129,12,112,193,62,14,186,67,240,50,143,209,71,245,25,236,180,181,39,101,42,89,246,14,105,31,146,11,98,58,165,97,243,76,106,160,48,197,196,193,38,25,66,235,71,229,145,124,121,60,110,182,185,154,216,150,22,212,210,102,165,209,90,199,217,30,72,70,27,219,135,28,149,210,25,36,90,78,37,170,122,99,134,169,244,85,185,235,44,87,109,187,243,148,230,184,83,220,236,108,103,253,170,117,23,136,206,243,158,185,235,44,56,43,163,175,130,165,245,150,113,184,170,60,220,42,206,28,168,158,99,87,67,65,19,85,91,243,217,53,25,63,70,234,105,221,139,49,204,114,155,72,238,88,114,237,59,177,100,167,184,121,49,55,101,230,226,246,250,220,20,191,19,55,143,215,37,44,85,182,165,162,181,228,42,170,156,22,30,13,194,105,56,27,12,167,156,185,240,212,157,177,7,69,103,69,227,81,98,29,29,114,67,187,184,52,39,10,52,234,237,131,88,109,124,17,52,222,157,143,65,231,60,154,208,135,55,205,86,119,26,3,20,23,183, +90,129,178,211,1,114,92,135,2,183,26,177,40,194,16,113,179,219,21,209,169,141,193,200,105,66,25,40,148,72,20,150,69,85,68,21,10,202,245,34,123,251,198,62,171,188,71,229,161,26,57,119,37,238,247,25,136,38,173,239,16,124,13,228,48,247,234,158,97,195,228,75,160,8,193,176,7,101,199,86,100,145,61,55,186,91,211,153,105,196,125,8,75,163,113,98,52,66,95,4,137,50,157,94,195,123,201,62,76,226,5,67,137,148,97,34,33,168,70,77,183,121,95,217,8,4,58,48,47,204,213,149,192,189,193,174,37,90,23,139,58,80,99,79,136,220,150,232,199,105,170,24,209,89,243,134,196,28,46,52,5,130,228,86,27,126,14,88,8,143,236,186,106,100,46,199,4,150,131,240,237,25,212,186,150,31,43,43,70,141,120,175,205,222,62,199,177,224,9,124,84,173,221,15,78,76,53,212,173,199,85,245,128,200,155,158,88,159,31,187,140,71,111,35,135,189,224,160,200,110,242,55,13,132,212,12,125,216,119,227,67,102,11,136,216,90,245,70,170,136,188,222,209,198,168,61, +161,107,124,67,12,69,162,198,165,202,238,26,227,36,115,13,53,80,180,62,197,186,84,136,243,73,8,51,46,230,196,171,9,214,38,22,153,140,41,234,102,162,142,110,163,149,78,7,38,187,226,170,134,131,168,146,9,196,194,193,174,147,225,143,48,52,131,142,114,20,85,180,210,231,29,157,100,144,175,159,14,168,238,78,38,57,114,86,236,236,163,168,136,150,208,93,202,243,215,161,115,63,88,5,102,240,102,150,38,217,153,240,209,100,215,196,68,126,63,1,244,213,103,227,117,36,237,216,124,109,154,229,79,167,44,105,148,42,75,162,114,123,149,211,14,51,71,242,49,16,251,193,220,96,143,122,85,51,31,170,112,55,103,251,83,254,132,165,26,35,105,240,17,33,97,42,225,7,120,33,59,202,61,146,17,232,117,95,136,169,236,185,198,200,128,184,164,29,37,245,119,171,176,140,221,124,218,67,232,122,154,29,47,183,40,190,202,205,203,59,134,181,219,75,188,115,127,48,176,129,49,68,150,155,230,244,129,229,177,180,23,193,197,185,216,84,9,83,66,224,204,240,85,4,138,116, +192,179,154,212,21,13,3,31,169,19,170,254,83,27,36,139,39,170,184,236,242,158,80,238,220,96,92,114,40,135,249,157,70,0,206,101,8,99,87,158,176,120,142,135,139,87,121,119,107,45,59,219,199,0,109,80,115,39,120,187,116,27,101,190,196,68,88,64,139,97,39,15,146,108,126,154,31,114,161,205,140,72,37,3,85,159,98,55,40,151,235,158,3,20,8,26,211,16,156,222,185,135,204,75,18,251,8,18,37,194,76,233,226,81,40,133,84,166,14,99,177,57,222,184,30,182,73,111,139,65,19,179,189,37,84,66,245,36,84,194,181,23,10,73,109,123,34,37,217,184,94,88,35,16,9,83,87,237,66,156,103,27,78,118,217,163,98,149,27,239,185,69,80,10,148,224,62,46,97,26,242,214,57,39,53,236,91,184,48,202,205,100,215,16,91,211,167,110,164,214,25,36,183,203,241,79,37,70,177,52,230,23,69,207,124,196,52,121,135,137,230,6,253,202,173,51,24,189,58,35,247,10,229,8,252,4,2,214,231,221,246,50,105,8,39,181,171,17,170,102,178,79,17,193,98,180, +74,26,121,214,227,83,45,108,145,140,137,72,71,237,13,154,178,226,1,154,148,100,56,29,108,211,96,246,13,183,159,227,210,197,86,147,233,195,100,185,119,164,26,223,72,139,170,3,235,173,189,91,85,108,145,60,132,145,34,161,101,95,14,16,29,35,233,200,207,106,167,53,149,213,61,15,145,215,18,222,234,10,4,233,233,169,99,172,87,56,13,210,221,26,94,115,93,196,194,78,35,220,138,179,178,150,223,58,65,175,237,183,237,218,1,74,225,74,246,145,24,161,2,43,54,33,69,61,201,89,214,60,70,172,106,90,59,167,55,164,189,48,135,142,47,112,110,203,246,125,84,122,230,130,115,40,125,82,173,122,194,224,21,164,53,216,169,151,195,238,68,125,123,115,236,173,172,203,45,220,180,17,199,38,38,103,135,109,214,233,246,79,160,211,187,122,117,58,21,38,57,249,94,25,70,60,56,181,192,236,21,116,119,172,78,104,24,107,88,101,175,91,115,232,103,182,185,206,172,243,18,7,165,19,226,216,190,59,70,118,179,216,186,136,184,163,39,177,109,58,135,78,75,212,206,97, +253,125,95,116,43,144,34,215,153,44,20,40,186,62,92,197,104,171,248,42,14,129,85,174,251,111,36,98,222,49,82,163,218,189,197,167,34,83,75,134,211,179,177,218,189,211,162,17,131,132,136,232,8,179,192,77,85,245,8,6,151,212,139,183,74,217,72,204,186,136,182,238,72,235,58,132,6,4,83,27,38,146,65,63,133,239,171,72,184,112,14,50,59,76,240,79,115,241,170,59,56,21,161,246,120,219,2,47,179,47,15,41,93,18,27,162,174,170,121,52,144,104,200,9,185,185,243,19,60,110,63,101,237,234,114,230,95,115,216,83,130,129,32,45,185,106,53,172,126,179,93,177,81,146,186,90,183,201,166,132,161,55,207,236,219,219,107,152,155,178,235,154,97,222,113,102,121,155,94,127,125,163,70,19,223,249,110,229,19,175,252,236,46,41,79,39,147,211,203,68,25,167,157,115,179,123,146,141,233,72,42,187,22,172,157,246,177,97,56,186,71,117,239,167,97,174,140,37,57,236,13,243,177,145,223,161,199,101,175,60,78,218,209,213,77,67,77,187,112,105,39,199,225,91,68,189, +192,209,116,96,91,103,68,142,38,59,230,193,156,199,24,220,173,187,142,247,92,173,239,76,117,57,174,104,14,65,108,172,55,75,138,214,198,170,200,5,65,136,134,108,80,50,238,219,229,51,224,236,85,190,108,142,90,191,116,222,152,107,39,219,40,68,196,40,1,73,221,104,139,212,140,64,151,99,46,139,240,216,83,244,95,208,149,165,190,53,32,181,243,116,116,254,106,15,13,106,249,14,14,199,41,31,99,131,159,235,92,94,211,79,220,216,129,86,11,69,129,215,13,185,243,20,100,251,0,105,246,43,234,179,1,29,50,58,24,160,88,2,27,233,122,43,107,213,17,185,55,186,228,208,114,107,237,0,237,66,121,71,199,225,229,99,36,132,176,59,83,123,141,215,27,80,141,113,166,105,172,226,137,188,117,189,107,72,37,65,89,7,157,114,143,135,146,242,174,27,176,43,228,88,223,63,213,8,220,6,30,178,98,244,13,217,17,55,54,17,220,51,93,148,115,117,108,179,159,4,243,215,50,250,232,5,107,139,127,2,221,128,91,198,135,142,4,179,99,247,206,232,163,41,58,229, +135,54,8,154,140,212,15,83,197,59,232,26,36,115,224,185,34,102,106,190,216,8,36,68,154,107,54,44,107,228,33,23,68,148,16,220,206,141,5,48,103,6,138,97,152,73,39,44,16,89,161,232,225,17,206,37,50,205,38,85,116,44,12,57,146,195,225,85,38,57,185,73,224,241,245,162,181,93,239,5,78,81,52,156,168,137,78,97,110,40,7,77,50,83,90,234,123,197,178,141,237,68,163,84,114,30,30,116,185,53,242,193,65,56,171,202,92,28,150,128,218,95,113,236,72,149,28,206,194,225,78,116,13,140,184,114,181,224,209,155,8,194,35,210,37,87,135,51,146,143,114,214,221,144,237,56,11,158,43,199,188,99,152,143,204,243,145,90,61,133,236,177,107,226,253,81,183,165,81,78,182,170,176,22,36,78,158,21,209,125,14,164,133,217,218,111,28,88,121,76,116,151,181,181,119,145,243,150,204,28,159,33,28,116,178,207,6,238,115,107,215,127,43,30,114,88,49,195,172,216,83,178,71,8,173,66,105,159,128,17,115,215,85,0,231,185,67,89,248,144,163,124,123,205,232,73, +14,70,222,52,14,82,76,99,99,153,97,30,173,217,73,8,11,172,188,27,191,46,222,5,83,16,206,33,21,164,190,54,82,215,173,60,226,20,25,98,114,134,225,22,83,78,240,162,153,99,184,168,183,55,20,154,72,252,65,24,167,165,237,214,210,74,149,16,40,239,247,38,156,114,177,171,180,0,77,143,224,148,239,224,246,160,91,250,45,254,96,198,242,181,148,113,243,57,233,33,113,48,197,9,103,177,188,99,114,178,70,77,175,190,175,19,122,217,64,253,6,41,91,2,180,110,46,132,58,182,70,17,230,138,177,91,103,90,35,134,67,11,138,233,88,157,58,165,225,152,92,228,104,183,5,93,221,218,186,208,68,159,156,209,123,146,193,117,191,223,70,96,233,152,1,219,172,156,114,14,224,100,13,139,23,211,250,241,216,181,164,96,63,104,223,244,110,198,238,170,213,56,36,20,38,196,59,171,186,146,186,59,206,69,17,16,147,96,88,72,104,100,208,29,55,220,34,139,19,189,91,245,221,97,15,65,100,82,77,23,51,145,2,118,215,132,133,168,214,244,58,161,30,79,100,182, +29,56,110,250,108,191,190,105,185,156,140,84,108,75,223,117,30,184,49,250,249,136,65,152,127,81,48,216,123,73,95,62,141,194,13,183,121,72,45,223,43,67,86,202,151,201,113,79,125,103,222,59,84,28,215,104,242,153,51,32,150,92,143,242,211,243,77,50,135,23,3,225,251,119,112,159,212,110,75,25,33,198,110,193,239,176,183,173,170,25,187,213,158,50,142,247,246,7,225,6,220,49,59,105,168,184,182,198,49,18,116,43,26,83,234,158,118,38,196,191,133,17,252,251,180,204,68,39,108,174,235,251,238,17,238,166,126,61,168,150,236,87,235,179,11,126,139,50,221,133,110,216,164,123,19,25,28,207,37,52,155,25,69,145,223,44,175,113,188,238,171,98,59,62,247,22,88,60,23,238,196,129,173,217,244,146,236,94,243,88,210,208,110,201,224,188,122,11,154,52,69,210,137,253,52,2,13,116,225,28,209,166,4,104,122,203,17,63,106,87,238,242,30,237,117,174,28,108,151,119,27,206,156,207,119,87,205,40,65,226,130,27,141,151,214,141,158,157,44,24,154,87,155,78,105,238, +139,11,171,179,51,36,74,84,182,217,54,21,21,41,66,2,5,65,103,35,86,2,186,230,187,245,43,228,218,162,99,157,111,223,29,207,77,205,107,69,10,89,247,106,55,203,245,241,22,56,192,193,93,122,236,74,71,211,84,222,96,11,167,3,8,74,0,186,241,26,167,198,43,23,150,20,15,16,98,216,36,201,175,223,148,193,69,90,191,126,223,69,138,159,30,35,67,144,75,208,150,138,224,182,172,93,194,41,154,186,4,69,58,195,250,45,183,46,68,31,204,172,211,219,32,133,28,236,247,170,74,228,97,38,159,240,223,192,237,101,121,138,0,66,211,199,83,207,169,169,202,243,94,28,108,96,45,252,186,30,14,35,99,173,129,64,149,70,24,250,118,55,25,72,56,40,162,222,68,198,79,200,200,19,248,28,63,108,69,55,86,27,120,182,44,112,75,52,227,179,27,224,166,27,213,114,205,129,134,207,63,15,200,198,52,141,3,51,74,18,85,177,17,159,31,59,168,155,173,103,119,96,81,231,196,201,243,184,16,24,244,181,51,148,189,97,64,205,151,48,41,91,148,116,103,204, +195,217,252,224,202,116,210,188,242,166,133,245,214,54,115,136,147,12,182,153,102,23,221,231,165,196,80,61,47,226,218,53,241,34,148,182,169,230,226,194,213,201,237,172,153,238,16,25,40,124,127,30,11,220,42,71,24,74,10,207,116,145,61,97,210,42,207,108,61,109,201,177,219,90,89,4,165,189,240,179,32,77,249,56,55,232,237,237,218,83,21,231,234,186,53,209,12,17,163,235,14,242,97,252,242,76,9,115,177,64,167,165,203,124,214,237,114,88,103,6,136,76,72,224,237,215,21,168,163,18,220,94,100,113,78,18,30,50,37,157,169,230,121,132,116,216,200,73,143,187,169,108,178,19,107,11,179,37,97,151,99,29,146,181,117,135,11,200,243,16,84,192,204,153,38,189,237,115,200,158,149,67,94,117,250,125,216,50,40,203,43,210,181,150,67,243,249,22,50,61,84,238,168,83,132,29,254,109,218,53,20,118,17,241,147,189,17,111,184,106,119,30,88,75,201,244,134,108,239,6,220,165,174,207,247,143,253,64,224,223,105,114,185,157,222,93,204,142,220,203,250,114,202,66,172,67, +54,195,167,23,41,112,45,183,7,218,165,197,178,220,180,139,94,232,14,139,173,212,17,72,177,21,87,235,42,177,201,42,135,190,9,89,179,242,60,224,97,186,8,239,160,225,171,23,56,196,36,90,71,138,250,188,164,217,33,82,73,174,39,70,110,121,7,70,238,113,233,20,125,53,31,143,70,141,184,65,209,229,168,70,83,35,124,47,92,72,140,16,214,93,30,230,220,162,33,203,8,187,154,20,18,210,3,193,64,131,152,15,94,246,144,247,221,67,162,80,91,77,249,216,194,38,101,14,106,216,156,161,194,106,55,192,41,111,216,132,182,213,155,93,243,160,134,32,210,209,167,136,190,183,209,184,156,57,55,57,220,106,82,56,43,204,8,107,87,125,117,98,46,224,5,42,174,210,244,114,66,237,214,143,147,35,72,189,62,191,35,227,107,151,151,67,162,234,42,113,43,93,157,57,193,76,51,21,92,26,7,179,148,197,127,37,112,195,198,33,190,92,59,218,175,90,88,103,246,34,225,252,144,169,11,238,159,108,122,57,233,20,66,112,126,62,96,42,101,117,146,45,175,173,200,209, +82,57,98,75,110,185,21,178,139,23,141,84,8,177,91,202,238,106,135,227,14,223,104,41,228,68,30,74,63,237,9,164,81,197,221,225,6,113,218,0,137,230,155,200,94,201,42,178,66,58,24,39,41,12,51,210,88,17,153,121,192,223,219,33,71,209,237,109,21,76,176,94,166,43,171,109,104,102,202,119,29,40,154,185,171,177,107,106,144,55,183,125,23,80,233,118,72,6,148,233,33,42,71,101,21,52,130,221,3,195,8,113,109,219,44,174,30,30,113,233,181,194,157,23,48,222,33,164,54,189,229,121,39,91,41,183,212,43,141,239,101,8,140,28,131,100,217,128,137,61,92,157,192,43,50,197,46,93,144,36,4,70,45,141,49,119,185,171,155,154,32,149,195,79,135,229,185,97,71,126,185,125,228,208,250,134,154,41,119,231,198,153,219,37,83,40,131,234,160,78,218,211,54,102,134,14,47,178,55,244,196,210,206,227,42,1,116,129,179,56,169,67,178,52,79,238,243,230,144,128,215,153,33,95,133,45,57,154,253,108,173,34,13,58,110,93,169,209,73,154,33,37,211,201,123,233, +75,206,237,240,132,43,216,209,164,16,38,94,48,177,167,136,114,20,165,65,255,48,154,6,177,142,54,199,80,200,142,172,189,167,66,135,202,215,23,236,75,189,127,171,121,24,0,121,46,208,34,235,214,225,41,114,239,146,116,210,77,229,36,94,50,137,43,112,119,65,54,249,69,60,37,232,120,134,96,148,2,71,150,221,18,8,231,51,3,73,182,217,244,29,212,92,193,158,45,165,63,170,67,168,240,137,196,155,77,241,143,204,164,232,110,154,89,206,72,144,217,205,105,220,107,177,32,71,144,137,35,65,108,35,226,28,79,52,97,218,119,176,37,218,213,152,199,13,119,104,2,92,59,50,174,23,49,182,179,87,133,91,59,253,118,82,203,123,119,162,101,55,175,169,111,235,133,254,53,43,228,206,58,37,216,143,110,25,210,132,91,183,154,166,66,52,249,74,207,145,29,150,117,147,187,41,33,148,97,195,246,146,77,213,90,109,237,248,192,121,61,119,220,16,106,129,217,192,210,53,165,85,210,17,67,63,137,73,243,163,124,79,0,73,166,251,167,234,198,110,181,196,194,102,189,13, +1,163,26,5,249,215,71,67,187,157,153,74,243,76,82,184,124,106,150,30,236,153,162,249,211,1,127,124,42,114,94,75,84,221,65,121,144,158,22,252,194,67,2,183,58,223,25,221,84,14,80,23,187,27,28,165,210,220,107,108,58,3,208,100,115,235,72,214,201,230,121,136,16,34,208,82,194,243,183,241,3,245,73,241,128,175,32,10,53,118,230,230,25,97,71,121,227,95,109,216,35,33,222,209,90,147,225,170,179,200,13,72,202,224,141,141,13,237,12,114,43,24,229,92,100,240,51,116,168,104,141,238,70,75,166,163,68,223,81,116,6,194,151,201,163,67,201,165,135,62,218,98,106,237,217,204,170,2,118,17,74,162,133,97,167,3,163,54,10,83,148,22,57,224,247,201,55,209,228,98,71,231,194,234,173,122,111,203,121,205,70,110,55,40,148,161,163,162,197,232,39,40,155,49,102,44,52,245,107,103,234,121,46,191,7,187,226,247,7,222,209,245,100,213,62,242,133,34,74,203,160,155,28,54,237,89,210,38,224,9,41,80,171,49,33,238,23,189,62,233,169,186,130,190,97,84, +10,161,76,23,228,9,77,105,121,61,157,141,75,96,135,250,16,20,146,226,72,92,183,195,32,98,85,47,245,64,73,221,203,212,41,62,157,174,197,16,1,142,64,14,174,122,185,160,180,105,31,147,68,71,234,158,145,109,58,138,65,226,10,13,18,201,235,199,84,64,217,116,76,132,111,76,53,197,180,141,190,117,110,97,5,232,85,81,105,245,66,73,221,66,210,114,115,108,74,194,56,35,87,55,20,186,226,8,146,161,184,110,201,71,230,176,237,206,234,129,64,183,40,194,219,209,72,47,167,40,175,212,10,227,170,166,160,183,147,83,251,148,29,230,26,122,167,215,235,205,239,10,119,198,60,119,187,168,8,58,4,80,61,199,113,226,184,178,217,142,145,55,60,228,233,205,26,195,47,32,241,122,80,31,30,78,65,238,251,226,242,144,115,119,110,60,207,25,133,185,102,10,167,200,248,71,90,70,248,206,79,1,97,192,237,36,146,41,199,8,71,147,105,255,152,227,72,213,214,210,119,254,108,191,162,49,95,51,214,143,219,164,129,145,190,78,9,187,245,29,56,201,105,162,123,102, +210,213,163,147,139,228,64,99,176,91,20,12,69,59,55,88,143,77,157,190,18,115,76,178,67,184,23,50,137,165,32,220,138,109,170,24,212,17,239,108,85,90,59,115,40,46,252,8,9,58,235,213,166,64,3,31,179,218,115,122,149,230,224,161,126,100,202,187,47,154,72,39,7,162,82,134,2,210,1,11,131,62,160,8,189,177,194,118,244,34,31,25,82,199,39,182,245,96,106,109,53,91,44,240,117,249,154,213,230,118,171,20,206,6,170,36,222,215,111,90,241,9,117,197,183,141,109,70,73,46,69,250,26,156,167,172,201,170,91,208,70,235,228,128,223,135,93,112,154,166,66,202,144,239,82,208,235,23,155,167,194,163,27,194,196,194,183,218,199,110,146,165,34,183,155,134,82,120,177,175,15,34,214,211,137,240,106,246,56,87,76,216,28,7,62,203,12,169,69,69,210,33,247,153,5,35,39,74,7,211,19,185,8,104,231,244,244,38,237,14,82,72,224,28,228,6,7,72,58,144,218,252,220,145,102,13,90,140,137,166,5,131,29,129,245,35,214,72,123,10,118,17,245,51,193,133, +66,96,12,21,128,22,221,214,37,14,231,24,166,214,26,82,95,117,238,12,167,160,20,109,67,150,40,203,42,188,126,130,146,43,146,187,84,203,101,117,112,237,116,28,211,79,165,9,205,149,66,181,219,35,55,194,213,145,163,200,42,29,72,66,169,171,227,3,10,143,141,245,65,134,176,86,108,211,192,247,148,84,25,229,109,59,29,205,30,121,16,126,19,43,122,0,245,220,1,151,127,15,131,232,172,230,29,72,159,208,163,182,29,42,246,138,55,196,107,25,174,159,222,44,235,152,194,109,166,187,40,188,24,70,197,176,145,164,177,223,66,134,68,147,243,24,110,34,73,145,171,186,141,146,112,71,87,111,207,231,130,35,4,135,18,149,40,17,141,56,152,131,155,196,229,24,250,252,8,91,172,12,147,126,246,5,69,50,163,132,207,183,157,91,180,227,83,204,5,162,167,216,88,35,217,178,165,190,206,113,211,142,118,183,149,13,138,193,98,188,219,205,158,95,23,204,182,136,102,203,180,59,108,239,87,196,153,126,249,6,124,234,20,227,185,22,103,8,58,26,39,170,112,177,72,190, +53,128,250,6,210,66,121,84,194,159,181,52,16,20,36,231,243,171,200,52,69,138,4,163,17,111,102,55,157,51,46,171,99,161,162,72,20,214,22,87,32,219,130,96,118,84,113,37,223,77,119,115,229,97,165,68,59,163,13,78,187,227,106,243,98,16,60,50,88,108,186,75,71,254,202,104,220,51,101,57,45,249,1,45,123,135,189,186,189,105,140,251,90,118,158,57,136,245,73,54,17,117,173,149,231,13,181,73,253,60,119,118,30,19,80,100,109,166,180,152,134,173,53,155,77,1,5,114,53,37,16,225,242,156,58,61,134,143,227,183,200,153,79,17,227,148,182,164,182,138,181,19,111,97,230,50,122,74,159,223,9,88,131,85,40,84,178,15,17,123,20,214,72,91,109,18,38,168,167,224,88,24,158,227,131,224,13,176,203,163,139,156,101,5,112,41,99,115,151,60,97,92,110,11,17,28,26,90,235,29,134,153,134,32,127,135,136,188,202,146,234,242,14,89,110,203,229,205,60,74,12,234,201,167,115,23,163,208,118,22,111,135,227,112,73,111,79,8,225,184,228,100,227,45,90,34, +221,98,139,19,254,153,208,165,155,208,37,151,171,129,124,31,62,110,55,112,181,115,171,93,125,6,197,158,89,192,253,89,154,184,230,1,25,118,78,98,149,35,203,113,74,232,169,56,179,97,74,152,40,78,49,226,193,206,249,102,224,224,106,220,58,215,70,85,13,68,107,84,87,26,152,202,66,185,136,77,249,48,195,66,240,92,9,202,68,10,10,198,73,71,232,104,82,252,180,173,45,70,51,71,219,62,113,167,182,207,84,249,78,6,228,34,213,105,235,107,130,132,174,57,129,78,209,165,45,197,144,112,44,140,77,4,103,182,252,150,253,152,90,91,227,158,77,104,149,89,120,218,152,139,156,59,107,251,33,206,132,103,109,237,111,119,46,136,240,6,206,224,208,129,197,167,225,182,214,40,70,146,78,173,126,246,220,121,105,178,31,83,50,65,53,175,166,158,135,224,120,12,29,9,109,194,90,56,94,110,164,154,24,183,196,186,245,169,37,27,199,187,98,216,210,90,51,93,191,189,75,58,173,59,254,94,77,8,171,92,43,19,8,202,26,212,151,96,80,145,117,104,34,4,153,134, +227,91,167,173,174,85,7,223,103,232,148,26,209,241,225,33,103,118,60,191,205,30,112,239,28,171,214,201,80,231,100,168,226,216,201,201,4,165,188,227,137,40,98,200,153,15,81,167,80,143,167,185,77,9,130,96,165,86,247,201,242,85,210,193,246,101,186,204,219,70,80,139,1,135,107,63,133,62,58,102,147,160,35,147,84,35,96,79,72,49,8,217,25,62,186,42,159,93,153,214,27,173,76,56,233,234,202,6,129,118,70,27,16,40,138,197,202,229,182,194,231,78,241,199,149,80,16,126,184,215,57,234,11,96,156,72,110,26,183,73,233,49,191,100,95,97,78,35,143,117,182,184,197,175,221,109,41,15,143,156,235,33,120,68,82,240,202,17,112,200,154,135,186,230,129,122,46,229,94,41,36,94,160,156,172,35,69,184,125,131,70,24,54,40,19,9,37,123,141,225,67,103,236,114,143,65,17,129,187,25,87,240,53,84,107,175,171,237,211,56,124,221,128,131,170,169,36,130,226,214,65,223,208,56,84,50,203,231,184,98,189,69,190,57,170,56,154,149,49,165,114,154,194,219,183,24, +214,181,38,54,193,200,224,24,211,27,20,69,60,190,98,6,93,162,245,148,170,225,115,187,218,1,133,248,78,33,87,100,37,17,185,91,235,145,148,224,26,11,215,168,104,159,7,136,204,11,178,97,42,15,109,28,134,178,76,65,83,221,46,230,202,34,210,181,76,117,64,10,202,74,133,113,234,132,138,96,121,208,138,12,118,171,217,94,181,29,101,107,92,214,180,237,132,71,128,156,160,235,244,141,248,253,22,198,207,99,15,197,89,213,184,154,161,74,167,51,212,185,130,186,63,227,239,51,72,134,34,125,32,106,95,150,243,243,106,152,19,12,133,175,243,150,125,84,192,198,217,244,149,84,129,51,121,193,44,128,196,207,160,103,34,14,117,63,135,178,204,227,103,187,20,150,196,39,59,241,221,21,220,142,13,25,223,130,148,201,250,178,221,171,131,96,74,228,86,186,136,140,8,202,215,216,165,107,229,200,200,153,103,8,115,207,74,227,219,193,173,162,63,154,176,214,145,7,216,172,105,231,104,223,74,146,90,60,68,100,238,156,69,143,109,79,178,230,48,82,174,26,245,45,13,11, +73,35,30,211,133,42,215,30,76,137,80,212,79,142,188,229,115,49,42,148,12,34,172,16,134,68,35,128,226,218,87,7,247,1,224,146,28,227,224,249,187,85,134,165,232,84,246,66,119,168,67,169,71,68,229,168,35,100,115,14,30,219,97,140,10,87,4,106,110,115,171,171,247,228,59,199,132,224,120,140,154,37,26,231,82,103,96,149,57,242,55,91,26,217,88,79,30,145,92,113,201,186,223,6,142,53,235,177,19,101,81,6,212,179,74,81,51,134,18,180,91,62,118,66,234,213,24,107,6,60,111,232,23,245,169,89,205,84,58,135,248,174,220,73,43,193,50,8,160,56,142,98,93,65,18,151,9,53,39,174,62,197,65,234,59,60,249,153,85,22,134,247,2,27,197,179,242,60,37,42,6,212,171,213,72,206,182,94,222,54,222,202,8,101,195,65,146,178,173,23,22,187,17,166,205,111,201,167,139,187,234,102,124,7,165,37,23,14,181,169,49,198,208,236,74,154,114,66,87,182,58,135,57,142,5,129,195,206,180,83,60,142,43,225,211,22,40,66,247,157,5,176,154,108,246,244, +104,51,212,130,148,253,86,109,78,182,187,157,148,116,34,251,217,78,99,10,99,88,114,228,26,107,168,199,117,119,243,130,139,3,219,41,178,120,163,213,212,6,181,86,217,86,170,111,159,69,147,240,140,86,127,105,128,36,252,210,25,251,104,119,94,110,48,45,241,179,116,17,106,57,52,96,70,117,31,153,168,216,81,167,169,244,254,106,109,155,106,12,64,37,17,80,66,129,179,52,227,98,29,181,27,74,171,12,165,33,171,99,42,156,196,143,220,29,71,76,20,152,243,21,150,12,50,132,220,28,36,125,122,50,45,74,220,108,54,35,187,98,83,194,180,83,58,186,157,78,238,38,217,227,187,203,198,160,86,59,222,190,176,154,42,254,19,133,210,127,114,163,129,146,206,3,236,64,76,125,169,23,111,21,184,155,149,144,202,117,52,242,180,202,119,225,100,181,147,115,202,66,136,234,222,22,141,137,201,246,124,107,184,203,3,81,229,178,185,70,76,136,218,54,33,80,24,0,49,76,205,70,142,217,97,94,60,94,233,173,222,118,113,198,202,38,205,204,149,198,243,248,61,156,176,147, +231,37,78,55,21,67,146,193,233,95,13,81,98,222,109,168,0,169,26,51,47,135,109,8,25,59,200,122,162,71,242,235,136,123,132,178,42,52,96,167,38,201,194,211,47,122,35,34,90,190,154,151,182,181,135,88,89,14,236,0,245,25,158,82,169,174,26,206,106,93,155,206,197,216,67,195,66,62,90,37,199,179,95,210,80,149,139,178,184,92,119,164,46,193,216,102,201,110,48,195,233,151,12,207,122,142,73,159,156,83,48,187,169,92,192,37,221,170,70,16,194,211,6,67,51,152,212,172,173,8,149,210,28,242,64,119,217,195,142,216,19,100,99,215,4,215,218,70,23,197,147,68,245,183,49,111,172,211,200,116,16,243,28,97,191,221,63,91,213,54,9,25,33,164,85,171,216,144,189,64,143,84,15,95,75,76,146,189,120,21,17,138,187,148,30,168,186,52,244,57,199,110,148,108,183,19,107,237,70,161,150,166,54,206,193,145,108,59,23,74,224,54,233,164,12,155,238,32,143,180,42,145,206,93,124,36,236,48,176,119,33,32,60,226,230,22,223,48,206,246,70,205,72,144,215,231, +184,170,202,20,203,84,49,211,75,25,95,126,115,71,153,24,117,65,149,46,220,172,192,112,155,87,240,78,184,127,124,226,19,159,227,174,39,221,91,7,206,181,73,161,100,115,206,130,172,12,225,111,164,206,11,65,158,242,42,129,214,11,196,132,48,147,33,144,17,128,139,92,66,187,102,135,243,233,236,70,28,14,135,73,172,75,233,249,57,235,208,116,150,187,90,71,50,125,208,78,63,134,212,156,95,67,164,164,96,17,3,85,54,192,37,168,74,104,35,88,66,2,118,222,39,153,55,174,227,65,2,207,51,148,214,132,33,166,158,118,231,129,184,171,183,49,53,7,191,135,32,122,200,71,54,254,44,48,93,3,219,36,87,209,232,161,154,155,192,193,93,73,233,238,186,69,220,152,160,149,177,49,95,0,137,106,201,136,102,228,198,47,129,187,161,194,145,122,206,39,113,135,37,158,53,201,85,110,83,245,170,115,19,220,158,167,48,66,148,166,1,159,184,176,165,50,48,149,16,42,221,202,111,24,74,232,252,233,193,120,227,102,188,169,22,19,169,58,12,103,82,81,36,14,247,56, +211,38,220,226,11,201,189,176,98,40,115,130,167,33,97,154,200,21,17,100,92,19,230,216,197,6,164,137,209,167,40,120,76,59,49,39,92,99,168,230,202,154,110,82,179,251,25,53,65,82,100,193,168,173,37,153,215,89,160,225,52,141,36,223,48,50,166,143,182,146,167,3,173,134,102,38,235,208,8,116,19,67,152,157,249,166,84,38,1,163,118,115,208,217,46,202,10,57,10,77,173,163,144,83,11,35,210,179,81,209,209,192,87,58,53,69,125,252,92,44,184,55,82,43,16,129,51,163,98,221,205,30,133,103,60,121,66,77,25,108,151,117,177,141,189,177,160,152,216,75,7,123,173,155,140,20,126,140,221,71,246,229,210,208,122,147,32,14,17,65,50,51,18,136,212,106,105,22,8,75,36,17,116,63,15,37,17,201,125,26,183,35,190,237,230,70,119,235,84,2,146,21,179,174,217,54,51,148,237,195,174,20,197,205,74,21,16,116,46,31,161,75,78,83,41,90,57,191,74,0,171,187,145,238,254,246,246,29,201,86,179,67,110,122,38,216,13,70,141,245,5,198,181,26,168,1, +142,202,204,49,237,221,25,193,8,61,165,247,209,98,101,106,158,45,149,245,152,32,222,130,154,109,204,11,132,198,186,57,64,91,131,223,173,99,10,105,178,12,217,199,75,240,23,158,137,95,68,96,246,200,29,59,212,3,119,78,131,67,162,34,136,241,137,182,46,238,96,5,20,220,169,72,231,192,201,97,167,45,182,74,119,235,221,166,86,104,110,104,116,233,81,208,112,38,151,37,8,145,88,38,222,170,129,175,60,104,155,146,195,85,74,122,117,173,9,78,149,106,200,254,128,50,192,184,56,27,22,125,231,1,133,94,236,212,148,152,48,19,102,48,61,47,169,104,17,150,104,212,202,95,225,192,14,84,59,95,81,145,19,55,12,75,197,6,85,79,123,153,162,172,76,238,241,102,229,41,184,140,96,168,65,233,53,10,108,23,68,207,7,155,181,166,248,150,163,133,26,252,183,151,116,200,64,123,113,184,111,13,92,233,78,237,234,45,103,253,112,21,79,143,182,182,77,116,44,187,79,35,159,27,130,195,108,1,154,177,55,245,181,62,140,24,146,153,183,43,3,226,137,118,21,175, +56,14,112,79,56,85,201,149,44,80,134,51,132,204,181,178,69,99,73,109,41,77,71,135,38,181,219,170,189,65,98,193,197,43,69,103,2,23,90,209,41,204,70,226,228,208,174,231,138,96,14,94,119,59,133,237,48,42,242,219,161,34,120,34,141,10,70,5,229,33,98,19,1,33,150,251,120,50,133,7,105,184,250,214,50,15,203,69,228,35,74,164,148,61,107,10,90,91,180,200,213,204,129,42,161,160,221,76,249,136,149,16,241,142,170,14,116,146,143,87,167,155,2,27,229,210,101,115,36,88,242,11,77,176,64,217,109,94,50,52,98,13,209,103,80,213,50,109,193,33,164,92,42,49,77,166,155,221,81,167,214,60,175,10,206,21,89,174,207,114,232,176,24,217,28,67,120,50,38,72,155,78,14,15,153,90,77,247,153,55,194,80,145,82,42,59,138,46,83,61,220,43,116,198,238,212,88,217,151,250,248,161,221,237,237,180,32,189,119,197,247,246,147,174,209,181,138,132,18,241,141,105,202,220,219,192,166,114,27,219,169,245,75,253,126,51,189,37,243,52,202,132,205,142,112,147, +225,80,174,25,114,156,245,148,192,1,187,68,39,83,124,110,36,29,140,132,102,41,7,198,117,134,132,25,177,5,227,129,109,48,171,110,236,156,154,179,71,196,147,116,120,79,117,101,84,88,7,6,133,14,103,59,85,235,214,81,184,134,196,122,18,141,172,182,218,140,171,240,169,121,218,61,220,199,30,36,45,167,92,210,233,21,227,114,102,217,11,90,138,46,166,192,151,137,12,55,77,183,69,198,148,58,214,89,201,155,2,130,84,217,133,112,15,233,24,149,110,104,219,208,29,95,174,106,188,3,28,231,64,55,115,161,215,39,253,227,92,242,80,214,57,56,212,178,131,199,232,67,252,93,141,35,191,12,142,244,232,129,78,221,157,181,168,217,226,70,125,255,136,130,225,201,76,146,182,138,116,105,40,37,180,176,179,66,62,11,178,22,99,104,250,118,215,199,75,174,134,125,182,252,6,94,77,115,31,166,118,124,116,68,168,234,129,68,147,222,192,17,202,147,189,26,180,69,88,113,114,255,54,161,211,140,193,163,67,251,70,36,109,65,246,75,74,194,213,173,221,182,22,239,39,47, +206,81,20,251,0,21,105,72,84,210,18,234,50,197,39,88,2,86,34,162,238,33,233,161,205,189,196,132,236,225,17,86,51,56,164,137,79,45,248,36,106,18,57,31,67,180,154,232,35,194,196,41,45,40,122,52,35,9,28,85,79,214,28,30,228,81,210,198,139,171,219,169,11,246,184,21,221,230,90,163,204,41,243,244,44,176,141,159,21,89,23,172,1,74,154,144,41,28,54,219,205,120,223,202,184,99,101,79,247,59,17,250,30,218,190,219,71,28,30,130,160,196,76,67,214,44,78,163,198,204,153,32,19,104,202,247,139,148,134,209,207,221,32,223,168,196,102,252,221,89,43,239,61,205,143,15,46,135,243,48,129,37,169,153,110,211,183,23,6,119,122,28,52,168,188,110,99,178,136,110,17,170,60,137,11,127,7,65,67,97,16,44,196,61,31,199,56,200,93,62,180,237,29,241,160,76,130,118,45,13,102,179,206,219,61,40,27,146,6,211,217,172,246,0,202,70,242,110,208,150,141,107,25,125,139,143,240,118,61,120,132,69,182,10,140,54,60,54,60,244,120,124,93,151,111,11, +170,8,184,3,198,38,160,82,8,79,9,118,99,70,91,224,99,17,184,179,183,65,48,149,15,248,123,115,80,26,76,184,242,108,224,61,243,177,93,130,107,103,199,80,59,206,134,154,196,139,128,212,234,129,11,219,245,220,235,113,52,33,169,89,4,33,24,215,116,5,108,39,38,190,99,111,21,32,244,150,135,38,254,253,136,232,45,47,70,197,67,27,32,126,238,193,87,16,198,49,160,206,173,6,198,94,107,119,160,236,10,254,6,99,217,200,21,144,40,11,123,76,235,219,133,106,3,169,111,110,171,248,213,235,147,150,184,218,115,228,142,3,151,174,204,254,93,160,172,222,33,156,130,215,148,28,128,251,29,191,12,240,92,176,164,0,60,239,89,2,60,23,44,73,0,207,5,203,93,89,174,128,178,16,100,244,85,203,253,168,66,144,45,70,39,160,133,28,106,223,14,2,116,95,140,64,125,251,253,72,179,16,14,200,38,47,132,3,178,83,11,225,128,236,171,133,112,64,246,221,66,56,32,155,184,16,254,47,112,30,2,146,95,229,2,54,145,67,9,183,18,60,148,0,247,140, +249,86,130,7,105,202,35,154,46,60,238,216,89,42,11,85,24,2,183,135,25,227,250,80,117,84,70,234,31,73,240,85,179,172,172,19,87,59,18,60,163,90,159,8,207,118,118,146,250,99,119,9,187,231,192,140,103,180,27,154,176,64,171,138,65,81,50,91,55,58,166,32,105,176,19,255,73,246,186,72,43,221,204,165,157,22,175,186,202,183,242,9,194,218,49,108,174,54,156,112,175,209,55,7,119,107,157,189,91,218,25,119,243,100,135,183,112,132,122,31,162,114,12,121,60,59,82,73,80,57,33,252,29,54,190,77,133,218,179,188,131,18,253,238,174,177,6,9,18,184,56,99,194,51,247,248,193,188,234,218,212,208,129,214,231,87,144,203,194,5,198,126,87,64,77,46,204,11,247,96,92,161,133,190,157,82,222,151,187,147,206,249,59,90,221,58,215,133,54,6,60,72,254,141,26,64,123,225,186,41,192,119,23,174,139,2,19,60,1,103,10,129,92,44,126,203,175,9,30,240,98,17,88,227,67,1,112,128,143,5,19,232,140,182,93,223,2,232,52,131,93,68,3,15,156,84, +134,204,0,179,202,60,13,182,191,51,59,87,81,145,77,59,6,152,160,219,205,90,231,78,152,55,71,99,172,128,184,190,198,174,161,155,119,118,134,136,139,210,100,104,40,221,156,97,226,35,217,237,104,114,25,132,230,8,30,39,193,11,171,108,227,16,21,220,222,241,124,175,110,203,186,0,27,25,132,215,52,196,101,225,152,202,233,71,188,115,34,159,5,37,112,17,59,30,30,108,108,233,113,137,30,164,114,114,121,45,119,32,175,192,183,66,64,179,29,178,83,133,63,56,158,175,67,174,221,72,254,94,208,4,206,243,104,119,3,38,219,46,188,102,209,184,183,157,17,164,116,67,90,108,220,197,239,204,196,23,246,97,203,104,187,188,14,59,174,197,55,119,37,150,0,74,16,246,47,123,109,49,148,0,238,11,200,11,76,88,199,253,221,24,138,224,129,34,31,16,120,141,3,210,243,48,225,121,61,241,240,249,123,247,245,30,166,239,152,162,59,248,102,215,84,253,131,71,191,120,249,111,127,178,180,248,250,119,63,249,55,63,188,31,252,201,79,126,252,15,143,127,189,252,211,79, +31,255,106,249,253,119,62,124,254,236,229,202,210,195,143,63,120,255,7,79,158,173,188,255,131,135,185,127,88,121,241,228,217,175,22,147,175,70,223,255,49,192,225,23,127,246,206,187,63,122,247,71,127,252,39,127,242,253,165,15,158,63,127,250,232,189,95,252,225,210,151,252,30,189,243,245,245,123,62,192,134,247,126,121,191,248,203,7,49,143,222,123,255,15,126,241,135,127,246,111,151,158,124,250,171,71,63,248,29,134,128,244,5,63,96,237,191,124,254,248,233,147,149,223,254,197,103,159,125,99,203,87,60,31,180,250,229,43,61,191,228,250,241,147,167,203,63,123,252,233,242,130,238,219,155,238,183,44,255,6,224,240,254,255,250,222,251,223,123,255,123,223,95,64,242,199,63,185,63,194,203,7,5,151,126,241,111,126,248,90,63,64,165,123,142,175,231,190,228,190,244,197,147,149,79,150,62,126,254,226,211,199,43,175,23,23,124,127,180,244,211,143,23,131,165,39,47,151,22,252,127,176,180,242,201,242,235,125,192,220,202,227,127,90,6,88,190,120,254,233,183,89,2,100,203,207, +94,62,121,254,236,71,175,148,122,181,227,107,96,220,179,0,24,190,154,90,122,7,224,188,244,127,126,246,171,239,47,1,223,139,133,15,158,172,188,92,250,108,249,197,210,103,79,126,179,252,244,97,253,57,176,240,226,149,14,47,191,255,227,183,56,197,223,3,8,173,124,135,87,252,238,199,219,157,225,43,62,255,98,222,240,155,123,115,253,2,24,189,251,214,61,191,253,103,236,249,226,201,71,43,159,220,239,251,217,231,79,159,190,109,215,39,203,79,126,245,201,202,151,219,94,123,200,253,185,94,2,122,190,193,69,62,124,254,252,197,71,47,127,244,122,250,55,63,120,244,122,248,219,175,134,247,210,191,250,249,74,204,143,222,98,142,191,122,241,248,139,159,47,127,184,242,183,79,158,1,6,89,252,122,139,37,190,126,103,255,242,249,211,231,47,128,125,223,178,206,175,159,63,249,232,222,58,95,103,11,216,231,189,95,46,38,126,121,63,253,232,235,4,239,255,193,107,204,190,195,42,111,183,197,119,91,224,247,32,255,182,229,167,128,206,255,199,27,24,124,229,89,247,231,255,229, +3,12,95,122,214,135,247,191,190,255,157,184,254,253,243,5,138,139,88,247,228,255,250,102,32,252,215,2,245,189,95,222,75,253,229,210,253,215,151,234,126,246,252,229,171,216,5,168,2,68,46,224,243,203,181,151,255,127,96,179,152,249,255,12,146,5,205,47,151,22,159,95,234,248,226,95,241,208,192,189,94,168,244,114,233,241,210,11,64,230,227,103,191,2,98,61,112,161,23,147,95,222,219,71,75,31,45,127,12,136,250,104,233,131,223,46,45,63,185,143,166,255,47,110,58,240,107,233,7,139,56,125,111,239,165,71,175,86,23,246,94,44,45,61,126,246,209,163,123,115,191,166,123,53,15,80,44,240,248,146,224,197,43,78,247,25,104,1,193,171,91,245,154,236,43,84,22,44,31,206,254,122,237,225,232,191,27,115,150,30,128,120,250,238,79,126,252,115,128,224,249,167,15,214,125,231,149,117,191,9,34,96,220,175,109,123,244,206,107,28,127,190,188,242,249,139,103,247,72,222,47,63,200,122,91,120,251,79,203,43,63,127,252,228,217,7,207,191,120,37,237,171,164,242,6,129, +223,216,253,187,137,229,43,127,248,245,227,167,127,244,239,31,189,73,161,123,218,7,141,30,146,239,227,103,0,221,103,159,175,44,104,62,255,18,241,7,6,15,59,222,93,122,231,231,203,31,125,127,105,229,249,210,187,191,249,27,224,207,27,80,123,117,144,197,5,249,102,206,124,248,249,234,238,188,62,216,239,102,190,87,7,91,248,250,63,39,83,190,241,218,60,127,241,228,155,121,243,43,242,55,94,166,111,195,243,242,243,15,30,178,218,71,203,79,159,124,250,100,229,193,209,239,125,238,75,151,123,67,225,114,47,250,59,236,251,247,139,10,228,237,181,196,183,98,199,215,244,254,79,127,241,231,128,222,192,39,160,247,31,62,192,116,207,237,209,215,185,253,243,42,135,183,231,168,215,64,0,204,31,138,170,7,247,120,254,49,0,201,67,245,4,4,130,183,167,251,39,207,30,175,0,37,227,235,64,176,16,244,42,16,60,122,93,191,253,227,39,64,185,246,138,213,75,32,192,60,254,232,253,31,62,127,246,244,183,175,64,123,133,214,155,97,187,63,226,95,124,254,241,199,203,47, +222,0,219,119,98,244,53,210,255,129,49,90,122,35,72,159,62,255,232,201,199,79,30,127,240,116,249,205,215,237,167,47,255,51,80,249,126,244,255,192,173,190,44,76,95,145,254,11,86,165,191,31,183,215,151,108,229,5,16,100,158,124,252,102,84,238,195,244,151,192,44,61,126,177,72,65,47,159,124,180,252,237,126,228,247,128,242,221,78,243,221,160,188,66,224,129,250,21,14,15,63,254,135,66,227,65,165,183,99,242,213,93,122,155,171,252,227,155,10,151,149,229,79,63,123,10,40,242,232,189,255,248,59,238,241,244,241,203,151,247,231,248,119,75,255,248,232,79,223,251,151,118,172,7,190,175,39,87,222,138,212,103,247,37,195,171,67,175,220,183,129,255,60,23,121,3,28,223,112,146,127,69,56,254,249,46,245,47,132,195,119,58,199,210,127,253,175,127,244,46,240,231,207,254,104,233,23,47,223,5,186,235,63,92,250,187,135,206,248,243,103,31,174,0,109,247,203,71,143,254,251,127,255,26,122,15,241,248,175,127,3,252,93,254,240,243,149,69,80,122,255,157,223,121,12,121, +211,3,195,210,55,105,238,129,120,235,67,196,183,34,236,103,47,158,255,234,197,227,79,129,241,227,21,160,178,123,250,116,233,249,103,64,230,5,50,50,80,133,62,254,252,233,202,195,139,194,147,167,192,165,185,47,1,191,124,54,248,157,119,136,5,219,119,31,206,1,124,253,240,191,253,226,127,89,250,235,223,60,6,172,186,252,227,71,175,38,129,169,31,254,183,111,106,251,206,251,223,251,100,229,211,167,239,127,15,40,50,126,248,167,75,239,127,239,111,158,188,88,254,248,249,111,126,180,252,155,229,247,191,247,232,237,233,254,175,94,60,249,245,242,223,62,121,185,242,181,202,241,207,95,188,120,252,219,95,46,221,127,61,250,143,223,134,225,79,95,225,245,37,237,27,202,201,103,64,8,0,200,31,206,122,15,208,227,149,79,94,46,202,178,199,0,54,31,45,40,95,254,96,17,110,150,95,60,123,252,116,81,45,47,0,89,140,129,217,143,150,159,173,0,249,4,168,104,128,148,180,32,126,249,219,151,128,111,127,71,213,242,225,23,31,125,237,0,111,54,47,176,231,205,138,126, +240,242,249,211,207,87,30,172,179,244,236,241,167,203,64,210,255,236,197,242,203,133,22,207,126,245,144,64,63,127,241,2,248,185,48,243,135,203,47,1,19,62,127,241,79,139,181,143,158,44,26,144,231,47,30,138,131,127,191,224,11,220,192,15,31,106,49,64,230,95,62,208,253,213,231,175,182,189,243,163,239,191,181,138,248,203,79,0,110,175,227,222,151,239,120,111,79,2,247,251,31,189,247,150,248,245,182,135,182,231,79,63,90,254,170,156,252,135,175,249,239,226,96,239,255,207,111,56,219,194,106,175,159,189,30,200,95,249,233,211,63,254,15,255,225,219,183,253,229,231,31,46,88,125,252,249,211,55,129,242,15,111,0,229,251,223,97,217,191,90,126,249,79,43,207,63,251,223,31,63,3,34,197,139,159,45,127,241,123,237,252,45,138,175,172,254,231,64,165,242,98,81,14,45,110,20,96,241,95,47,191,184,191,130,64,101,244,45,194,119,0,168,31,191,4,148,6,214,129,197,191,123,249,211,103,31,63,127,187,170,63,251,187,159,189,255,222,207,255,250,175,127,246,143,63,255, +243,159,253,227,251,239,253,231,123,29,255,112,233,91,243,143,222,76,240,206,175,95,29,235,155,36,64,32,186,111,114,190,180,217,79,87,0,255,124,128,252,117,3,244,104,129,251,125,128,121,21,20,151,62,121,252,114,233,131,101,32,2,125,8,220,183,175,93,164,133,119,175,124,178,40,106,239,51,246,147,149,251,157,207,158,191,230,9,108,253,237,242,202,239,216,247,167,247,79,160,159,191,92,6,44,122,127,129,23,207,5,64,37,249,165,44,96,238,131,229,215,130,86,190,120,242,225,125,51,14,84,132,64,84,95,92,154,151,79,86,62,127,124,31,170,127,176,120,207,4,110,250,67,68,123,16,242,63,221,75,121,242,71,127,242,238,79,254,238,221,69,97,249,181,83,44,120,190,92,250,203,149,23,79,223,255,241,143,255,254,193,69,255,250,215,0,207,151,239,124,255,39,139,55,219,239,60,243,23,159,0,227,199,75,31,124,190,178,242,245,213,197,213,6,236,186,120,227,5,206,245,106,245,67,32,16,124,176,252,122,109,233,241,175,128,230,115,233,229,243,223,21,240,106,211,215, +79,250,163,223,127,8,64,200,43,10,192,253,255,242,147,39,79,63,250,219,231,47,87,254,230,249,135,159,3,167,120,109,133,69,182,88,116,117,207,150,191,0,98,38,208,137,127,1,32,14,56,245,15,150,158,46,174,232,203,199,191,253,193,18,0,192,167,159,173,252,221,255,6,56,225,67,253,253,197,227,111,50,124,72,61,223,208,241,199,15,166,95,6,130,195,194,155,151,129,245,15,31,3,246,252,26,195,165,79,129,70,241,229,171,28,181,252,244,163,133,77,159,62,127,254,114,249,213,67,56,192,250,117,110,122,244,232,255,6,165,154,125,34, diff --git a/bazaar/Functions4U/srcdoc.tpp/ChangesLog$en-us.tpp b/bazaar/Functions4U/srcdoc.tpp/ChangesLog$en-us.tpp index c3ea63b7d..2900478da 100644 --- a/bazaar/Functions4U/srcdoc.tpp/ChangesLog$en-us.tpp +++ b/bazaar/Functions4U/srcdoc.tpp/ChangesLog$en-us.tpp @@ -4,7 +4,9 @@ topic "News and changes Log"; [{_}%EN-US [s0; [*R+184 Functions4U. News and changes log]&] [s0;%- &] -[ {{1441:8559f0;g0;^t/25b/25 [s0;# [2 2012/07/03]] +[ {{1441:8559f0;g0;^t/25b/25 [s0;# [2 2012/12/22]] +:: [s0;# [2 Added ReadCSV().]] +:: [s0;# [2 2012/07/03]] :: [s0;# [2 Included NAMESPACE`_UPP.]] :: [s0;# [2 2012/03/19]] :: [s0;# [2 Added new math and geometry functions as Distance() and Angle().]] diff --git a/bazaar/Functions4U/srcdoc.tpp/ChangesLog$en-us.tppi b/bazaar/Functions4U/srcdoc.tpp/ChangesLog$en-us.tppi index 897a93f60..3a198281c 100644 --- a/bazaar/Functions4U/srcdoc.tpp/ChangesLog$en-us.tppi +++ b/bazaar/Functions4U/srcdoc.tpp/ChangesLog$en-us.tppi @@ -1,7 +1,7 @@ TITLE("News and changes Log") COMPRESSED -120,156,141,86,109,111,226,56,16,254,43,163,238,139,186,91,22,146,16,40,165,159,88,210,174,42,177,136,227,69,119,18,202,21,147,56,193,106,98,231,28,3,221,171,250,223,111,236,208,109,1,179,183,72,160,100,228,121,102,230,153,103,198,204,225,253,123,167,230,188,115,254,231,211,13,104,66,214,153,10,231,164,211,188,254,60,110,163,159,139,126,77,183,233,58,110,219,243,47,125,207,105,58,158,239,122,45,183,211,241,221,203,86,167,121,213,110,119,35,82,40,38,120,56,127,186,127,254,112,51,252,50,155,192,188,116,174,97,254,121,124,225,118,124,184,93,243,72,31,40,253,89,29,134,116,91,2,225,49,68,43,194,83,90,66,38,210,240,99,168,29,62,124,1,124,128,167,39,215,247,221,110,167,213,186,74,156,235,212,185,254,91,53,188,214,18,191,6,246,29,204,61,240,28,215,107,56,151,13,167,25,134,221,238,171,253,142,71,217,58,166,49,12,123,223,111,38,163,94,255,102,113,63,27,141,234,251,167,42,239,102,195,189,218,183,247,98,237,202,233,22,114,162,86,38,203, -148,138,156,42,249,3,146,151,34,128,148,16,176,82,17,30,209,243,79,230,80,143,167,25,62,31,71,113,117,142,94,123,223,62,43,98,162,48,206,31,42,185,249,103,77,52,232,105,95,223,150,225,132,108,232,93,78,82,140,89,131,145,100,92,237,222,76,54,129,36,219,49,141,212,128,241,83,73,249,13,183,109,5,86,8,150,194,84,60,80,206,254,165,231,17,214,171,94,172,139,143,165,146,53,56,176,41,125,182,6,152,3,190,20,162,180,7,244,142,42,65,29,188,21,198,226,62,160,185,128,130,68,15,88,137,29,194,245,236,57,35,133,209,40,91,167,140,31,249,57,232,116,20,122,140,145,54,85,181,83,49,101,185,161,113,44,16,135,186,29,103,199,226,55,170,52,137,72,32,12,197,22,235,67,77,224,207,108,113,177,184,176,132,113,174,176,93,251,246,9,42,7,88,94,72,12,150,83,174,74,13,50,32,88,243,234,150,101,180,6,196,228,63,43,10,42,111,69,22,83,89,181,47,131,243,96,48,248,4,188,10,139,109,92,63,130,18,226,152,88,199,72,228,242,23,157, -28,211,34,35,168,211,221,107,213,192,21,145,144,48,30,239,30,101,117,198,210,56,131,127,56,36,47,236,101,56,7,127,229,25,202,164,226,75,178,184,175,100,246,115,80,42,222,72,150,1,145,84,23,210,23,242,224,232,174,219,165,53,114,187,225,89,251,221,67,190,120,172,25,28,18,36,248,124,203,112,84,115,141,173,112,163,128,218,10,12,152,150,123,93,68,250,112,146,21,16,40,215,75,166,103,5,19,42,89,172,243,1,51,59,39,82,112,29,91,10,223,112,59,80,57,45,10,136,144,133,82,163,227,84,108,168,196,64,104,196,89,64,37,199,137,201,96,165,242,236,4,248,225,242,218,117,110,147,34,90,38,164,157,150,214,137,156,114,242,168,101,156,35,209,102,37,97,54,213,74,120,229,7,105,89,27,33,90,129,155,168,97,27,112,128,29,172,202,76,132,132,37,41,89,4,49,218,144,236,56,211,162,194,136,127,162,154,196,246,36,110,103,223,142,77,65,44,35,248,215,173,90,137,10,137,211,50,177,2,225,32,183,78,237,235,157,16,127,194,157,0,176,87,136,249,68, -219,120,55,247,253,85,204,164,109,109,34,0,110,161,214,81,41,1,45,31,148,40,190,19,142,124,75,189,214,170,82,18,41,114,152,252,40,239,120,98,31,221,99,180,169,36,229,10,190,34,161,177,136,76,171,204,237,240,59,128,184,127,244,166,235,216,234,251,58,9,88,146,188,225,26,89,94,156,197,104,91,156,153,154,23,103,5,81,209,10,223,150,140,19,125,217,225,116,29,115,184,139,97,85,109,181,21,122,81,164,245,101,161,175,242,61,220,224,3,65,204,36,47,238,39,36,193,246,177,71,132,90,174,211,122,189,14,119,90,111,169,48,179,187,52,219,139,169,223,225,192,57,136,17,208,140,234,235,54,16,55,155,95,38,119,232,216,151,212,220,211,111,255,190,132,225,243,115,245,103,5,194,240,63,203,197,191,203, +120,156,141,86,107,111,218,74,16,253,43,163,244,33,210,80,176,141,33,132,124,162,152,84,145,40,226,242,184,247,74,200,13,139,189,54,171,216,94,119,189,64,218,40,255,189,179,107,210,4,88,218,34,64,120,216,57,51,115,230,204,216,115,120,251,214,170,90,111,172,63,188,58,30,141,200,58,145,254,156,180,27,215,31,198,45,244,179,209,175,97,55,108,203,110,57,238,165,235,88,13,203,113,109,167,105,183,219,174,125,217,108,55,174,90,173,78,64,114,201,120,230,207,31,239,158,222,245,135,31,103,19,152,23,214,53,204,63,140,47,236,182,11,55,235,44,80,7,10,119,86,131,33,221,22,64,178,16,130,21,201,98,90,64,194,99,255,189,175,28,222,125,4,252,1,143,143,182,235,218,157,118,179,121,21,89,215,177,117,253,85,214,157,230,18,63,26,246,13,204,29,112,44,219,169,227,219,113,124,191,211,121,177,119,195,144,134,48,166,36,236,77,254,173,156,215,246,255,213,94,214,101,221,106,236,219,111,179,32,89,43,199,97,247,75,127,50,234,246,250,139,187,217,104,100,244, +110,212,237,43,83,204,140,110,33,37,114,165,107,139,41,79,169,20,223,33,122,46,29,72,1,30,43,36,201,2,90,57,215,135,186,89,156,80,83,142,182,202,209,105,237,219,103,121,72,36,198,249,71,70,253,111,107,162,64,79,251,186,166,12,39,100,67,111,83,18,99,204,42,140,4,203,228,238,74,103,227,9,178,29,211,64,14,88,118,42,41,183,110,183,140,192,18,193,98,152,242,123,154,177,31,180,18,96,189,242,217,186,120,95,72,81,133,3,155,84,103,171,128,57,224,69,206,11,115,64,231,168,18,84,207,107,57,45,238,60,154,114,200,73,112,143,149,152,33,108,163,68,38,18,41,12,70,201,58,102,217,145,159,165,165,117,16,122,140,145,54,101,181,83,62,101,169,166,113,204,17,135,218,109,107,199,226,103,42,21,137,72,32,12,249,22,235,67,77,224,215,108,113,177,184,48,132,177,174,176,93,251,246,9,42,7,88,154,11,12,150,210,76,22,10,100,64,176,230,213,13,75,104,21,136,206,127,150,231,84,220,240,36,164,162,108,95,2,21,111,48,56,135,172,12,139, +109,92,63,128,228,252,152,88,75,75,228,242,55,157,28,211,60,33,168,211,221,101,217,192,21,17,16,177,44,220,253,20,229,25,67,227,52,254,225,144,60,179,151,224,28,252,159,38,40,147,146,47,193,194,158,20,201,175,65,41,121,35,73,2,68,80,85,72,143,139,131,163,187,110,23,198,200,173,19,43,161,139,124,101,161,98,112,72,144,224,202,150,225,168,166,10,91,226,30,2,185,229,24,48,46,246,186,136,244,225,36,75,32,80,172,151,76,205,10,38,84,176,80,229,3,122,118,78,164,96,91,166,20,62,227,118,160,98,154,231,16,32,11,133,66,199,169,216,80,129,129,208,136,179,128,74,14,35,157,193,74,166,201,9,240,195,229,181,235,220,38,70,180,132,11,51,45,205,19,57,165,228,65,201,56,69,162,245,74,194,108,202,149,240,194,15,210,178,214,66,52,2,55,80,195,38,96,15,59,88,150,25,113,1,75,82,176,0,66,180,33,217,97,162,68,133,17,255,67,53,241,237,73,220,246,190,29,155,130,88,90,240,47,91,181,20,21,18,167,100,98,4,194,65,110,158, +218,215,59,33,254,130,59,1,96,174,16,243,9,182,225,110,238,123,171,144,9,211,218,68,0,220,66,205,163,82,60,90,220,75,158,127,33,25,242,45,212,90,43,75,137,4,79,97,242,189,184,205,34,243,232,30,163,77,5,41,86,240,9,9,13,121,160,91,165,239,14,127,3,136,251,71,109,186,182,169,190,79,19,143,69,209,43,174,145,229,197,89,136,182,197,153,174,121,113,150,19,25,172,240,106,201,50,162,110,118,56,93,199,28,238,98,24,85,91,110,133,110,16,40,125,25,232,43,125,15,55,248,128,19,61,201,139,187,9,137,176,125,236,1,161,150,235,184,86,171,193,173,210,91,204,245,236,46,245,246,98,242,111,56,176,14,98,120,52,161,234,118,235,241,254,230,183,201,29,58,246,4,213,247,233,215,15,61,190,255,244,84,62,226,128,239,255,4,127,97,205,124,