#include "icons/page-down.xpm"
#include "icons/remove.xpm"
#include "icons/database-add.xpm"
+#include "icons/create-database.xpm"
#include "icons/help.xpm"
#include "icons/synchronize.xpm"
// The ids of the different tools
enum
{
- TOOL_ADDFILES_ID = 1,
- TOOL_ADDDIR_ID = 2,
- TOOL_REMOVE_ID = 3,
- TOOL_ADDDATABASE_ID = 4,
- TOOL_HELP_ID = 5,
- TOOL_SYNCHRONIZE_ID = 6
+ TOOL_CREATEDB_ID = 1,
+ TOOL_ADDFILES_ID = 2,
+ TOOL_ADDDIR_ID = 3,
+ TOOL_ADDDATABASE_ID = 4,
+ TOOL_REMOVE_ID = 5,
+ TOOL_SYNCHRONIZE_ID = 6,
+ TOOL_HELP_ID = 7
};
//======================================================================
Icon_remove,
Icon_database_add,
Icon_help,
- Icon_synchronize
+ Icon_synchronize,
+ Icon_create_database
}
icon_id;
//================================================================
mToolBar = new wxToolBar(this,-1,wxDefaultPosition,wxDefaultSize,
style);
+ mToolAddFile = mToolBar->AddTool( TOOL_CREATEDB_ID,
+ _T("Create database"),
+ mIcon->GetBitmap(Icon_create_database),
+ _T("Create DB from an Attributes Descriptor file")
+ );
mToolAddFile = mToolBar->AddTool( TOOL_ADDFILES_ID,
_T("Add file(s)"),
mIcon->GetBitmap(Icon_page_down),
mIcon->GetBitmap(Icon_folder_down),
_T("Add the content of a folder to database")
);
+ mToolAddDatabase = mToolBar->AddTool( TOOL_ADDDATABASE_ID,
+ _T("Open database"),
+ mIcon->GetBitmap(Icon_database_add),
+ _T("Open a local or distant database")
+ );
mToolRemove = mToolBar->AddTool( TOOL_REMOVE_ID,
_T("Remove"),
mIcon->GetBitmap(Icon_remove),
_T("Remove selected items")
);
- mToolAddDatabase = mToolBar->AddTool( TOOL_ADDDATABASE_ID,
- _T("Open database"),
- mIcon->GetBitmap(Icon_database_add),
- _T("Open a local or distant database")
+ mToolSynchronize = mToolBar->AddTool( TOOL_SYNCHRONIZE_ID,
+ _T("Synchronize"),
+ mIcon->GetBitmap(Icon_synchronize),
+ _T("Synchronizes the database with disk")
);
- mToolHelp = mToolBar->AddTool( TOOL_HELP_ID,
+ mToolHelp = mToolBar->AddTool( TOOL_HELP_ID,
_T("Help"),
mIcon->GetBitmap(Icon_help),
_T("Open help window")
);
- mToolSynchronize = mToolBar->AddTool( TOOL_SYNCHRONIZE_ID,
- _T("Synchronize"),
- mIcon->GetBitmap(Icon_synchronize),
- _T("Synchronizes the database with disk")
- );
//const wxBitmap& bitmap1, const wxString& shortHelpString = "", wxItemKind kind = wxITEM_NORMAL)
mToolBar->Realize();
void WxGimmickView::GetSelectedImages(std::vector<vtkImageData*>& s, int dim)
{
std::vector<std::string> files;
- GetTreeViewMap()["Local database"]->GetSelectedAsString(files);
+ GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->GetSelectedAsString(files);
ReadImagesNotThreaded(s,files,dim);
}
//======================================================================
//======================================================================
void WxGimmickView::GetSelectedFiles(std::vector<std::string>& s)
{
- GetTreeViewMap()["Local database"]->GetSelectedAsString(s);
+ GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->GetSelectedAsString(s);
}
//======================================================================
icons[Icon_database_add] = wxIcon(database_add_xpm);
icons[Icon_help] = wxIcon(help_xpm);
icons[Icon_synchronize] = wxIcon(synchronize_xpm);
+ icons[Icon_create_database] = wxIcon(create_database_xpm);
// unsigned int NbIcons = 8;
// Make an image list containing small icons
//Going up
prio = maxprio + 20;
std::vector<tree::Node*> up;
- GetTreeViewMap()["Local database"]->GetNodes(up,true);
+ GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->GetNodes(up,true);
std::vector<tree::Node*>::iterator iterUp;
for(iterUp=up.begin();iterUp!=up.end();++iterUp)
{
//Going down
prio = maxprio + 19;
std::vector<tree::Node*> down;
- GetTreeViewMap()["Local database"]->GetNodes(down,false);
+ GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->GetNodes(down,false);
std::vector<tree::Node*>::iterator iterDown;
for(iterDown=down.begin();iterDown!=down.end();++iterDown)
{
{
//TODO Select current tree handler
wxBusyCursor busy;
- GetTreeViewMap()["Local database"]->RemoveSelected();
+ GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->RemoveSelected();
ClearSelection();
}
//=================================================
void WxGimmickView::OnSynchronize(wxCommandEvent& event)
{
wxBusyCursor busy;
- const wxString choices[] = { _T("Check database for file deletion or addition and give a report."),
- _T("Check database for file deletion or addition and attribute change and give a report."),
- _T("Repair database (removes deleted files and adds new files)."),
- _T("Repair database (removes deleted files, adds new files and resets changed attributes).") } ;
+ const wxString choices[] = { _T("Check database for files deletion and addition and give a report."),
+ _T("Check database for files deletion, addition and attributes change. Then give a report."),
+ _T("Repair database (remove deleted files and add new files)."),
+ _T("Repair database (remove deleted files, add new files and reset changed attributes).") } ;
wxSingleChoiceDialog dialog(this,
_T("Select one of the following synchronization actions:\n")
- _T("Plase note that, due to the heavy amount of operations required, this action might take a while."),
+ _T("Please note that, due to the heavy amount of operations required, this action might take a while."),
_T("Synchronization Settings"),
WXSIZEOF(choices), choices);
std::stringstream st;
for(int i = 0; i< files.size(); i++)
{
- st<< "remote_" << i+1;
+ //get name of DB (file name)
+ size_t pos = files[i].find_last_of("\\");
+ std::string name = crea::wx2std(files[i].substr(pos+1));
+ pos = name.find_last_of(".");
+ name = name.substr(0,pos);
//create TreeHandler
- mGimmick->addDB(st.str(), crea::wx2std(files[i]));
+ mGimmick->addDB(name, crea::wx2std(files[i]));
//create TreeView
- CreateSingleTreeView(st.str());
+ CreateSingleTreeView(name);
}
}
+ }
+ ////////////////////////////////////////////////////
+ // Create a DB from an Attributes Descriptor files //
+ // @param event : WxEvent //
+ // @return : - //
+ //////////////////////////////////////////////////
+ void WxGimmickView::OnCreateDB(wxCommandEvent& event)
+ {
-
+ //Select DB
+ long style = wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST;
+ std::string wc("*.txt");
+ wxFileDialog* FD = new wxFileDialog( 0,
+ _T("Select file"),
+ _T(""),
+ _T(""),
+ crea::std2wx(wc),
+ style,
+ wxDefaultPosition);
+
+ if (FD->ShowModal()==wxID_OK)
+ {
+ wxBusyCursor busy;
+ wxArrayString afile;
+ FD->GetPaths(afile);
+ //get name of DB (file name)
+ std::string file = crea::wx2std(afile[0]);
+ size_t pos = file.find_last_of("\\");
+ std::string name = file.substr(pos+1);
+ std::string directory = file.substr(0,pos);
+ pos = name.find_last_of(".");
+ name = name.substr(0,pos);
+ //get directory to store DB
+ directory += "\\" + name + ".sqlite3";
+ //create createDB
+ mGimmick->createDB(name, file,directory);
+ //create TreeHandler
+ mGimmick->addDB(name, directory);
+ //create TreeView
+ CreateSingleTreeView(name);
+ }
}
//=================================================
//=================================================
BEGIN_EVENT_TABLE(WxGimmickView, wxPanel)
+ EVT_TOOL(TOOL_CREATEDB_ID, WxGimmickView::OnCreateDB)
+ EVT_TOOL(TOOL_ADDFILES_ID, WxGimmickView::OnCreateDB)
EVT_TOOL(TOOL_ADDFILES_ID, WxGimmickView::OnAddFiles)
EVT_TOOL(TOOL_ADDDIR_ID, WxGimmickView::OnAddDir)
+ EVT_TOOL(TOOL_ADDDATABASE_ID, WxGimmickView::OnAddDB)
EVT_TOOL(TOOL_REMOVE_ID, WxGimmickView::OnRemove)
EVT_TOOL(TOOL_SYNCHRONIZE_ID, WxGimmickView::OnSynchronize)
- EVT_TOOL(TOOL_ADDDATABASE_ID, WxGimmickView::OnAddDB)
END_EVENT_TABLE()
//=================================================
--- /dev/null
+/* XPM */
+static const char * create_database_xpm[] = {
+"48 48 816 2",
+" c None",
+". c #BAC3C7",
+"+ c #B4BDC2",
+"@ c #B1BABF",
+"# c #B5BEC3",
+"$ c #BAC2C6",
+"% c #BDC5C9",
+"& c #BAC2C7",
+"* c #B6BFC3",
+"= c #B2BBC0",
+"- c #ABB5BA",
+"; c #B8C1C7",
+"> c #AEB8BE",
+", c #C8CFD3",
+"' c #D9DDE0",
+") c #E7EAEC",
+"! c #E9ECED",
+"~ c #E6E9EB",
+"{ c #DDE1E4",
+"] c #D1D7DA",
+"^ c #C8CFD2",
+"/ c #C4CBCF",
+"( c #C0C8CC",
+"_ c #BEC6CB",
+": c #C0C7CC",
+"< c #C2CACE",
+"[ c #C5CCD0",
+"} c #CCD2D6",
+"| c #D7DDE0",
+"1 c #E3E7E9",
+"2 c #E8EBED",
+"3 c #DDE1E3",
+"4 c #C9D0D3",
+"5 c #ACB6BC",
+"6 c #B2BBC1",
+"7 c #EEF0F2",
+"8 c #D7DCDF",
+"9 c #B8C0C5",
+"0 c #A1ADB3",
+"a c #A2AEB4",
+"b c #A6B1B8",
+"c c #C1C9CE",
+"d c #C8D0D4",
+"e c #C8D0D6",
+"f c #C6CFD5",
+"g c #C0CBD2",
+"h c #BBC6CE",
+"i c #B4C1C9",
+"j c #ACBAC2",
+"k c #A2B1BA",
+"l c #99A9B2",
+"m c #92A2AC",
+"n c #94A3AC",
+"o c #9BA8AF",
+"p c #ADB8BE",
+"q c #CFD5D9",
+"r c #EAEDEF",
+"s c #E0E4E6",
+"t c #B9C2C7",
+"u c #B8C1C6",
+"v c #EEF0F1",
+"w c #D6DBDF",
+"x c #A8B3B9",
+"y c #9AA8B0",
+"z c #B4BEC6",
+"A c #CED6DC",
+"B c #E6EBEF",
+"C c #ECF0F3",
+"D c #F0F3F5",
+"E c #F3F6F7",
+"F c #F3F6F8",
+"G c #F1F4F6",
+"H c #EDF1F4",
+"I c #E9EEF1",
+"J c #E3E9EE",
+"K c #DFE6EB",
+"L c #D9E2E8",
+"M c #D4DEE5",
+"N c #D0DBE2",
+"O c #CBD7DF",
+"P c #C5D3DC",
+"Q c #BFCFD9",
+"R c #B9CAD5",
+"S c #B4C7D2",
+"T c #AEC1CF",
+"U c #A3B7C4",
+"V c #96A8B5",
+"W c #899BA6",
+"X c #C8CFD4",
+"Y c #F0F2F3",
+"Z c #BCC4C8",
+"` c #CED4D8",
+" . c #EBEEEF",
+".. c #A6B2B8",
+"+. c #ABB8C0",
+"@. c #CCD6DD",
+"#. c #D8E1E7",
+"$. c #E0E6EB",
+"%. c #E4EAEE",
+"&. c #EAEFF2",
+"*. c #EEF1F4",
+"=. c #F8F9FA",
+"-. c #F9FAFB",
+";. c #F4F6F8",
+">. c #EEF2F5",
+",. c #EBEFF2",
+"'. c #E4EAEF",
+"). c #E0E7EC",
+"!. c #DAE3E8",
+"~. c #C6D3DD",
+"{. c #B5C7D3",
+"]. c #AFC2CF",
+"^. c #ABBFCD",
+"/. c #A8BCCB",
+"(. c #A5B9C8",
+"_. c #9FB4C1",
+":. c #91A5B1",
+"<. c #94A4AD",
+"[. c #DDE2E5",
+"}. c #D8DDDF",
+"|. c #FCFCFC",
+"1. c #B0BBC2",
+"2. c #C2CED6",
+"3. c #CFDAE2",
+"4. c #EFF2F5",
+"5. c #A2B7C5",
+"6. c #9EB4C2",
+"7. c #99AFBD",
+"8. c #8FA2AD",
+"9. c #FCFCFD",
+"0. c #FDFDFD",
+"a. c #D0DAE1",
+"b. c #CAD7DF",
+"c. c #EDF0F3",
+"d. c #E0E6EC",
+"e. c #A7BCCB",
+"f. c #A4BAC8",
+"g. c #A1B7C5",
+"h. c #9DB4C2",
+"i. c #9AB1C0",
+"j. c #FAFBFB",
+"k. c #D5DEE3",
+"l. c #C1CED4",
+"m. c #F5F8F9",
+"n. c #D5DFE5",
+"o. c #CED9E1",
+"p. c #D3DDE4",
+"q. c #D6E0E6",
+"r. c #DCE4EA",
+"s. c #E2E8ED",
+"t. c #E5EBEF",
+"u. c #EDF1F3",
+"v. c #E6ECEF",
+"w. c #DDE5EA",
+"x. c #D7E1E7",
+"y. c #D3DDE5",
+"z. c #CAD6DE",
+"A. c #C4D2DC",
+"B. c #BECED8",
+"C. c #B8C9D5",
+"D. c #B4C6D2",
+"E. c #A7BBCA",
+"F. c #A4B9C8",
+"G. c #A8BCC9",
+"H. c #E3E9ED",
+"I. c #E8EDF1",
+"J. c #628293",
+"K. c #ADBEC8",
+"L. c #F4F6F7",
+"M. c #ECF1F4",
+"N. c #D5DFE6",
+"O. c #D2DCE3",
+"P. c #CCD8E0",
+"Q. c #C9D5DE",
+"R. c #C2D1DB",
+"S. c #BCCCD7",
+"T. c #B7C9D4",
+"U. c #B2C4D1",
+"V. c #ADC0CE",
+"W. c #AABECC",
+"X. c #A6BBCA",
+"Y. c #B0C2CE",
+"Z. c #F5F7F9",
+"`. c #DDE5EB",
+" + c #AABDCB",
+".+ c #5E7F91",
+"++ c #628394",
+"@+ c #728FA0",
+"#+ c #AABCC6",
+"$+ c #E1E7EB",
+"%+ c #F7F9FA",
+"&+ c #F0F3F6",
+"*+ c #E6EBF0",
+"=+ c #E5EAEF",
+"-+ c #DBE4E9",
+";+ c #C0D0D9",
+">+ c #BACBD6",
+",+ c #B6C8D3",
+"'+ c #B7C8D4",
+")+ c #C8D5DE",
+"!+ c #DAE3E9",
+"~+ c #E3EAEE",
+"{+ c #C3D2DB",
+"]+ c #ADC1CE",
+"^+ c #A4B9C7",
+"/+ c #668698",
+"(+ c #6A899B",
+"_+ c #7391A1",
+":+ c #87A1B0",
+"<+ c #ABBDC8",
+"[+ c #CFD9E0",
+"}+ c #E7ECEF",
+"|+ c #F2F5F7",
+"1+ c #F3F5F7",
+"2+ c #EFF3F5",
+"3+ c #EBF0F3",
+"4+ c #E9EEF2",
+"5+ c #F6F8FA",
+"6+ c #DFE7EC",
+"7+ c #658697",
+"8+ c #6E8D9E",
+"9+ c #7291A2",
+"0+ c #7794A6",
+"a+ c #7B98A9",
+"b+ c #829DAE",
+"c+ c #91AAB9",
+"d+ c #AFC2CD",
+"e+ c #BECDD6",
+"f+ c #E6ECF0",
+"g+ c #FBFCFC",
+"h+ c #D2DDE4",
+"i+ c #BACBD5",
+"j+ c #819DAE",
+"k+ c #88A3B3",
+"l+ c #8EA7B7",
+"m+ c #93ACBB",
+"n+ c #99B0BF",
+"o+ c #A0B6C4",
+"p+ c #A6BBC9",
+"q+ c #ACBFCE",
+"r+ c #C1D0DA",
+"s+ c #FAFBFC",
+"t+ c #D8E2E8",
+"u+ c #93ABBB",
+"v+ c #A6BAC9",
+"w+ c #D6DFE6",
+"x+ c #728D9D",
+"y+ c #7693A3",
+"z+ c #6E8D9F",
+"A+ c #B6C5CF",
+"B+ c #AAB5BB",
+"C+ c #CAD1D5",
+"D+ c #788D99",
+"E+ c #698594",
+"F+ c #7390A1",
+"G+ c #D9E0E6",
+"H+ c #B4C0C8",
+"I+ c #9EACB5",
+"J+ c #C2CACF",
+"K+ c #ECEFF0",
+"L+ c #EBEDEF",
+"M+ c #909EA5",
+"N+ c #607580",
+"O+ c #4B6370",
+"P+ c #47606D",
+"Q+ c #526C7A",
+"R+ c #5F7988",
+"S+ c #6C8695",
+"T+ c #7B94A3",
+"U+ c #859EAD",
+"V+ c #8FA6B5",
+"W+ c #9AB0BE",
+"X+ c #A3B8C7",
+"Y+ c #DCE4E9",
+"Z+ c #E0E6EA",
+"`+ c #DEE4E7",
+" @ c #DBE0E3",
+".@ c #CDD4D8",
+"+@ c #ADB9BF",
+"@@ c #8D9DA6",
+"#@ c #6E828D",
+"$@ c #4B6471",
+"%@ c #49626E",
+"&@ c #5C727D",
+"*@ c #819199",
+"=@ c #DDE2E4",
+"-@ c #D4D9DC",
+";@ c #8F9EA6",
+">@ c #5C7380",
+",@ c #576F7C",
+"'@ c #57707D",
+")@ c #58717E",
+"!@ c #5B7481",
+"~@ c #5E7784",
+"{@ c #607986",
+"]@ c #627A88",
+"^@ c #667E8B",
+"/@ c #6A818E",
+"(@ c #6A818D",
+"_@ c #687F8B",
+":@ c #677E8A",
+"<@ c #657C89",
+"[@ c #617985",
+"}@ c #5C7481",
+"|@ c #5A727E",
+"1@ c #768993",
+"2@ c #FEFEFE",
+"3@ c #889AA4",
+"4@ c #687F8C",
+"5@ c #728793",
+"6@ c #F9FAFA",
+"7@ c #D4DEDD",
+"8@ c #C6D1D8",
+"9@ c #E7EBED",
+"0@ c #94A5AF",
+"a@ c #7E929E",
+"b@ c #8295A1",
+"c@ c #ADB6BD",
+"d@ c #BEC5C9",
+"e@ c #C6CBCF",
+"f@ c #BDC4C8",
+"g@ c #CED2D5",
+"h@ c #E9EBEC",
+"i@ c #ABC1C0",
+"j@ c #648395",
+"k@ c #B4C3CC",
+"l@ c #EDF0F2",
+"m@ c #D2D9DE",
+"n@ c #A7B5BE",
+"o@ c #97A8B3",
+"p@ c #93A5B0",
+"q@ c #9AA9B3",
+"r@ c #BCC5CA",
+"s@ c #E3E4E6",
+"t@ c #F3F4F4",
+"u@ c #E5F1E8",
+"v@ c #D4EADB",
+"w@ c #B9DDC3",
+"x@ c #B7DCC1",
+"y@ c #D2E8D9",
+"z@ c #E2EFE5",
+"A@ c #EFF1F0",
+"B@ c #E2E3E3",
+"C@ c #C7D1CB",
+"D@ c #7B97A6",
+"E@ c #B2C2CB",
+"F@ c #E9EEF0",
+"G@ c #D7DEE3",
+"H@ c #C1CDD4",
+"I@ c #AFBEC8",
+"J@ c #A4B5C1",
+"K@ c #A3B4BF",
+"L@ c #A3B4C0",
+"M@ c #BBC5CC",
+"N@ c #E9EAEB",
+"O@ c #F5F9F5",
+"P@ c #A2D3B1",
+"Q@ c #48A86C",
+"R@ c #128F41",
+"S@ c #018636",
+"T@ c #008636",
+"U@ c #0F8D3F",
+"V@ c #43A567",
+"W@ c #98CEA9",
+"X@ c #EEF3EF",
+"Y@ c #E5E4E4",
+"Z@ c #6F8E9F",
+"`@ c #8AA4B2",
+" # c #B0C1CC",
+".# c #F2F4F6",
+"+# c #E8EDF0",
+"@# c #DBE2E8",
+"## c #D6DEE4",
+"$# c #D3DCE3",
+"%# c #D2DBE2",
+"&# c #D1DAE1",
+"*# c #D5DEE4",
+"=# c #D8E0E5",
+"-# c #F7F8F7",
+";# c #B0DABC",
+"># c #21974D",
+",# c #038A38",
+"'# c #109142",
+")# c #20994F",
+"!# c #2A9F57",
+"~# c #2FA15C",
+"{# c #30A25C",
+"]# c #2CA059",
+"^# c #249B53",
+"/# c #169447",
+"(# c #078B3B",
+"_# c #199346",
+":# c #A4D4B2",
+"<# c #EFF0EF",
+"[# c #CCD3CE",
+"}# c #7C98A9",
+"|# c #86A1B1",
+"1# c #94ABBA",
+"2# c #A4B9C6",
+"3# c #B4C5D0",
+"4# c #C2D0D9",
+"5# c #CFDAE1",
+"6# c #D8E1E8",
+"7# c #ECF1F3",
+"8# c #F2F2F2",
+"9# c #F5F9F6",
+"0# c #75C08C",
+"a# c #078E3B",
+"b# c #129444",
+"c# c #29A057",
+"d# c #31A55D",
+"e# c #32A65E",
+"f# c #32A75E",
+"g# c #31A65D",
+"h# c #32A55E",
+"i# c #31A45D",
+"j# c #2EA25A",
+"k# c #1C994C",
+"l# c #098E3C",
+"m# c #66B881",
+"n# c #ECF1ED",
+"o# c #CBD4CE",
+"p# c #E5E9EB",
+"q# c #FBFBFB",
+"r# c #69BB82",
+"s# c #048F38",
+"t# c #1D9C4D",
+"u# c #32A95D",
+"v# c #33AA5D",
+"w# c #36AB5D",
+"x# c #A3D9B6",
+"y# c #AFDEC1",
+"z# c #AFDEC0",
+"A# c #A0D7B5",
+"B# c #2BA65A",
+"C# c #32A85D",
+"D# c #28A056",
+"E# c #0A913D",
+"F# c #57B375",
+"G# c #F3F4F3",
+"H# c #C7CFC9",
+"I# c #DAE1E6",
+"J# c #F8F8F8",
+"K# c #90CEA2",
+"L# c #029037",
+"M# c #21A04F",
+"N# c #34AA5D",
+"O# c #3AAD5D",
+"P# c #41AE5C",
+"Q# c #47B05C",
+"R# c #4DB15D",
+"S# c #E9F5EB",
+"T# c #E6F4EC",
+"U# c #32A658",
+"V# c #45AF5C",
+"W# c #3FAE5C",
+"X# c #38AC5D",
+"Y# c #2CA459",
+"Z# c #09923D",
+"`# c #7AC391",
+" $ c #EBECEB",
+".$ c #EBEEF0",
+"+$ c #D6EDDB",
+"@$ c #119941",
+"#$ c #1BA04A",
+"$$ c #3CAD5C",
+"%$ c #50B25C",
+"&$ c #56B45C",
+"*$ c #5AB65B",
+"=$ c #5EB85C",
+"-$ c #EBF6EB",
+";$ c #FFFFFF",
+">$ c #3AA957",
+",$ c #59B55B",
+"'$ c #54B35C",
+")$ c #4DB15C",
+"!$ c #43AE5C",
+"~$ c #39AC5D",
+"{$ c #29A556",
+"]$ c #0D963E",
+"^$ c #C6E4CE",
+"/$ c #D9DBD9",
+"($ c #62BC7D",
+"_$ c #0E9B3C",
+":$ c #42AE5B",
+"<$ c #58B55B",
+"[$ c #5FB85B",
+"}$ c #65BB5B",
+"|$ c #69BC5B",
+"1$ c #6DBE5D",
+"2$ c #EDF7EB",
+"3$ c #41AC57",
+"4$ c #68BB5B",
+"5$ c #63BA5B",
+"6$ c #5DB75B",
+"7$ c #4CB15C",
+"8$ c #3FAE5D",
+"9$ c #1BA049",
+"0$ c #4DB36E",
+"a$ c #F2F1F1",
+"b$ c #6E8A99",
+"c$ c #718EA0",
+"d$ c #E2E7EA",
+"e$ c #E2F2E4",
+"f$ c #29A440",
+"g$ c #3BAA4D",
+"h$ c #56B45B",
+"i$ c #67BB5B",
+"j$ c #6DBE5C",
+"k$ c #72BF5F",
+"l$ c #76C061",
+"m$ c #79C264",
+"n$ c #EEF7EC",
+"o$ c #47AE5A",
+"p$ c #74C060",
+"q$ c #70BF5D",
+"r$ c #6BBD5B",
+"s$ c #64BA5B",
+"t$ c #5CB75B",
+"u$ c #52B35C",
+"v$ c #40AD59",
+"w$ c #20A23E",
+"x$ c #D1EAD7",
+"y$ c #CDD5CD",
+"z$ c #A6B2B9",
+"A$ c #E1E5E7",
+"B$ c #7B909D",
+"C$ c #6B8797",
+"D$ c #728E9F",
+"E$ c #7B98A8",
+"F$ c #C2D0DA",
+"G$ c #EFF1F3",
+"H$ c #ADDBB4",
+"I$ c #52B030",
+"J$ c #6BBC54",
+"K$ c #78C163",
+"L$ c #7CC367",
+"M$ c #80C56A",
+"N$ c #83C66C",
+"O$ c #EFF8ED",
+"P$ c #4BB05E",
+"Q$ c #7FC469",
+"R$ c #7BC265",
+"S$ c #76C161",
+"T$ c #60B85B",
+"U$ c #65BA59",
+"V$ c #56B33D",
+"W$ c #93D1A0",
+"X$ c #E2E1E1",
+"Y$ c #EFF1F2",
+"Z$ c #9AA7AD",
+"`$ c #627580",
+" % c #4C6370",
+".% c #435C69",
+"+% c #6E8897",
+"@% c #7D96A5",
+"#% c #89A2B2",
+"$% c #96ADBC",
+"%% c #F8F8F9",
+"&% c #82C786",
+"*% c #73BC32",
+"=% c #93CB50",
+"-% c #78C365",
+";% c #A7D89C",
+">% c #ACD9A2",
+",% c #B0DBA5",
+"'% c #B2DCA7",
+")% c #B1DBA5",
+"!% c #AFDAA1",
+"~% c #F5FAF3",
+"{% c #F0F8F4",
+"]% c #90CE9B",
+"^% c #AFDAA2",
+"/% c #AEDAA4",
+"(% c #ABD8A0",
+"_% c #A5D79C",
+":% c #5EB862",
+"<% c #8ECA51",
+"[% c #79C044",
+"}% c #70C07C",
+"|% c #EDECEC",
+"1% c #8E9DA5",
+"2% c #58707D",
+"3% c #536C79",
+"4% c #627A87",
+"5% c #677E8B",
+"6% c #82959F",
+"7% c #76C172",
+"8% c #82C338",
+"9% c #9BCE4E",
+"0% c #A2D36E",
+"a% c #F8FCF7",
+"b% c #F9FCFB",
+"c% c #5BB66A",
+"d% c #86C64A",
+"e% c #5AB557",
+"f% c #FDFEFE",
+"g% c #8497A1",
+"h% c #647C89",
+"i% c #647B88",
+"j% c #80939D",
+"k% c #72C063",
+"l% c #86C43A",
+"m% c #ABD669",
+"n% c #FAFCF6",
+"o% c #5CB76A",
+"p% c #8BC84C",
+"q% c #57B44C",
+"r% c #F3F3F3",
+"s% c #CFD8DE",
+"t% c #E1E6E8",
+"u% c #889AA5",
+"v% c #778C99",
+"w% c #8C9DA8",
+"x% c #81C771",
+"y% c #85C439",
+"z% c #AAD568",
+"A% c #FAFCF5",
+"B% c #5BB76A",
+"C% c #8AC74B",
+"D% c #66BB55",
+"E% c #638294",
+"F% c #BBC9D1",
+"G% c #CAD3D8",
+"H% c #A1B0B9",
+"I% c #90A2AD",
+"J% c #8EA1AC",
+"K% c #8FA1AC",
+"L% c #99A9B3",
+"M% c #F6F7F8",
+"N% c #97D087",
+"O% c #7FC136",
+"P% c #96CB45",
+"Q% c #B4DA84",
+"R% c #B3DA89",
+"S% c #B4DB8C",
+"T% c #BADE9D",
+"U% c #C1E1AC",
+"V% c #F7FBF5",
+"W% c #F1F9F5",
+"X% c #A0D5A6",
+"Y% c #BBDE9E",
+"Z% c #B4DB8D",
+"`% c #B0D987",
+" & c #6EBB43",
+".& c #99CD4B",
+"+& c #82C447",
+"@& c #8ACA7A",
+"#& c #EFEFEF",
+"$& c #638495",
+"%& c #7F9AA9",
+"&& c #B9C7D0",
+"*& c #E8ECEF",
+"=& c #E8ECEE",
+"-& c #D1D9DE",
+";& c #BBC7CF",
+">& c #ABB9C4",
+",& c #A5B5C0",
+"'& c #A1B2BD",
+")& c #A0B1BC",
+"!& c #A3B3BE",
+"~& c #BFE2B4",
+"{& c #73BC36",
+"]& c #95CB44",
+"^& c #83C124",
+"/& c #82C023",
+"(& c #83C126",
+"_& c #89C434",
+":& c #F1F8E7",
+"<& c #4EAF41",
+"[& c #8CC637",
+"}& c #76BF42",
+"|& c #ACD99F",
+"1& c #E7E6E6",
+"2& c #7593A3",
+"3& c #94ABB8",
+"4& c #B7C7D0",
+"5& c #DBE3E8",
+"6& c #EBEFF1",
+"7& c #E2E8EC",
+"8& c #DBE2E7",
+"9& c #D5DDE3",
+"0& c #CFD9DF",
+"a& c #CDD7DE",
+"b& c #CBD5DD",
+"c& c #C9D4DC",
+"d& c #E9ECEF",
+"e& c #E8F4E3",
+"f& c #73BD49",
+"g& c #85C22A",
+"h& c #83C125",
+"i& c #EFF7E4",
+"j& c #4CAE3D",
+"k& c #7FC028",
+"l& c #6ABA43",
+"m& c #DCEED6",
+"n& c #D7DDD3",
+"o& c #92AAB9",
+"p& c #A9BCC9",
+"q& c #B9C9D3",
+"r& c #C7D4DC",
+"s& c #E1E8ED",
+"t& c #E7EDF0",
+"u& c #9BD084",
+"v& c #7CBE2E",
+"w& c #74BC2D",
+"x& c #8CCA75",
+"y& c #F6F6F6",
+"z& c #F0F2F4",
+"A& c #E2F1DB",
+"B& c #7EC150",
+"C& c #81C025",
+"D& c #82C124",
+"E& c #7DBF25",
+"F& c #74BD48",
+"G& c #D7ECCF",
+"H& c #E4E5E2",
+"I& c #DDE4E9",
+"J& c #BCDFA9",
+"K& c #81C13F",
+"L& c #82C024",
+"M& c #80C024",
+"N& c #78BE3B",
+"O& c #AED89A",
+"P& c #607F91",
+"Q& c #EBEEF1",
+"R& c #AFD993",
+"S& c #86C441",
+"T& c #CBE5A8",
+"U& c #D0E9BB",
+"V& c #C1E2AE",
+"W& c #5DB435",
+"X& c #7FBF24",
+"Y& c #7DC03D",
+"Z& c #A4D387",
+"`& c #F8F9F7",
+" * c #DADDD5",
+".* c #6D8491",
+"+* c #638394",
+"@* c #F2F4F5",
+"#* c #F9FBF7",
+"$* c #BADE9E",
+"%* c #90C950",
+"&* c #82C128",
+"** c #7EBF28",
+"=* c #87C54B",
+"-* c #B1DA94",
+";* c #F4F8F1",
+">* c #E1E4DC",
+",* c #728792",
+"'* c #F5F6F7",
+")* c #FBFCFA",
+"!* c #D7EBC4",
+"~* c #9FD06C",
+"{* c #8BC642",
+"]* c #81C027",
+"^* c #81C024",
+"/* c #7EBF27",
+"(* c #86C440",
+"_* c #99CD66",
+":* c #D1E9BD",
+"<* c #E2E5DE",
+"[* c #758893",
+"}* c #738A97",
+"|* c #738F9E",
+"1* c #7793A4",
+"2* c #FAFAFB",
+"3* c #D2E9BB",
+"4* c #B3DA8B",
+"5* c #98CD5D",
+"6* c #91C94D",
+"7* c #8DC746",
+"8* c #8CC746",
+"9* c #8FC84D",
+"0* c #95CB5B",
+"a* c #B0D886",
+"b* c #CEE7B6",
+"c* c #F4F9F1",
+"d* c #778B96",
+"e* c #798E9A",
+"f* c #7C929F",
+"g* c #8399A7",
+"h* c #89A1B0",
+"i* c #90A8B7",
+"j* c #97ADBC",
+"k* c #DEE5EA",
+"l* c #E5EAEE",
+"m* c #EAEDF0",
+"n* c #E3E6E8",
+"o* c #D5DADC",
+"p* c #F0F1F2",
+"q* c #FAFBF9",
+"r* c #F2F8ED",
+"s* c #E6F3DA",
+"t* c #D8ECC6",
+"u* c #D7ECC5",
+"v* c #E5F2D8",
+"w* c #F2F8EC",
+"x* c #F8FAF7",
+"y* c #F4F4F3",
+"z* c #E2E4DF",
+"A* c #8496A2",
+"B* c #82949E",
+"C* c #81929C",
+"D* c #83949E",
+"E* c #8797A1",
+"F* c #8B9BA4",
+"G* c #8D9CA4",
+"H* c #8D9BA4",
+"I* c #8B99A1",
+"J* c #A4AFB6",
+"K* c #E7EDDF",
+"L* c #EDEDEB",
+"M* c #EFEEEE",
+"N* c #EBEBEB",
+"O* c #E4E9DD",
+" . + @ # $ % & * = - ; ",
+" > , ' ) ! ~ { ] ^ / ( _ : < [ } | 1 2 ) 3 4 5 ",
+" 6 ' 7 8 9 0 a b > ; c d e e f g h i j k l m n o p q r s t ",
+" u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W y X Y Z ",
+" ` ...+.@.#.$.%.&.*.E =.-.;.>.,.'.).!.M N O ~.Q R {.].^./.(._.:.<.[.}. ",
+" |.1.2.3.M L $.%.&.*.F -.-.;.4.,.'.).!.M N O ~.Q R {.].^./.(.5.6.7.8.9. ",
+" 0.a.b.3.M #.K J I c.G ;.;.G H I J d.L M N O P Q R S T ^.e.f.g.h.i.6.j.k. ",
+" l.m.n.o.p.q.r.s.t.&.u.4.4.H ,.v.s.w.x.y.o.z.A.B.C.D.T ^.E.F.g.h.G.H.I. ",
+" J.K.L.M.r.N.L K s.B I ,.,.I v.H.K !.n.O.P.Q.R.S.T.U.V.W.X.F.Y.p.Z.`. + ",
+" .+++@+#+$+%+&+&.*+=+J '.'.J s.K -+q.p.3.O ~.;+>+,+'+S.)+!+&+=.~+{+]+^+ ",
+" .+++/+(+_+:+<+[+}+|+%+%+Z.1+2+H 3+4+I.B t.t.4+H F %+-.5+H 6+M )+>+]+^+ ",
+" .+++7+(+8+9+0+a+b+c+U d+e+O M L ).f+4+M.&+;.%+0.g+Z.H t.K #.h+)+i+V.^+ ",
+" .+++/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P.q.).I 1+9.s+;.H t.K t+h+)+>+]+^+ ",
+" .+++/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P.q.).I 1+9.s+;.H t.K t+h+)+>+]+^+ ",
+" .+++7+(+8+9+0+a+j+k+l+u+n+o+v+q+{.r+P.w+).I |+9.s+;.H t.K #.h+)+i+V.^+ ",
+" ++/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P.q.).I 1+9.s+;.H t.K t+h+)+>+]+ ",
+" x+y+z+9+0+a+j+k+l+m+n+o+p+q+{.r+P.q.).I 1+9.s+;.H t.K t+h+P.A+ ",
+" B+) C+D+E+F+a+j+k+l+m+n+o+p+q+{.r+P.q.).I 1+9.s+;.H t.G+H+I+J+K+. ",
+" < L+M+N+O+P+P+Q+R+S+T+U+V+W+X+^.{.r+P.N.Y+Z+`+ @.@+@@@#@$@P+%@&@*@=@-@ ",
+" g+;@>@,@'@'@,@'@'@'@'@)@!@~@{@]@^@/@(@_@:@<@[@}@'@'@'@,@'@'@'@,@|@1@g+ ",
+" 2@3@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@5@6@7@ ",
+" 8@9@0@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@b@n c@d@e@e@f@g@h@i@ ",
+" j@k@l@m@n@o@p@p@p@p@p@p@p@p@p@p@p@p@p@p@p@p@p@p@q@r@s@t@u@v@w@x@y@z@A@B@C@ ",
+" .+++D@E@F@l@G@H@I@J@K@L@K@L@L@K@L@L@K@L@L@K@L@M@N@O@P@Q@R@S@T@T@T@U@V@W@X@Y@ ",
+" .+++7+(+Z@`@ #k.F@Z..#+#$+@###$#%#a.&#$#*#=#{ -#;#>#,#'#)#!#~#{#]#^#/#(#_#:#<#[# ",
+" .+++/+(+8+9+0+}#|#1#2#3#4#5#6#`.%.4+7#>.G 8#9#0#a#b#c#d#e#e#f#g#e#h#i#j#k#l#m#n#o# ",
+" .+++/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P.q.p#q#r#s#t#g#u#v#w#x#y#z#A#B#u#C#e#D#E#F#G#H# ",
+" .+++7+(+8+9+0+a+j+k+l+u+n+o+v+q+{.r+P.I#J#K#L#M#N#O#P#Q#R#S#2@2@T#U#V#W#X#v#Y#Z#`# $ ",
+" .+++/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P..$+$@$#$$$Q#%$&$*$=$-$;$2@T#>$,$'$)$!$~${$]$^$/$ ",
+" ++/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+%#q#($_$:$%$<$[$}$|$1$2$;$2@T#3$4$5$6$&$7$8$9$0$a$ ",
+" b$c$8+9+0+a+j+k+l+u+n+o+v+q+{.r+d$e$f$g$h$[$i$j$k$l$m$n$2@2@T#o$p$q$r$s$t$u$v$w$x$y$ ",
+" z$A$X B$C$D$E$j+k+l+m+n+o+p+q+{.F$G$H$I$J$s$r$k$K$L$M$N$O$;$2@T#P$Q$R$S$q$|$T$U$V$W$X$ ",
+" . Y$Z$`$ %.%P+Q+R++%@%#%$%o+p+q+{.P %%&%*%=%-%;%>%,%'%)%!%~%;$2@{%]%^%,%/%(%_%:%<%[%}%|% ",
+" g+1%2%3%3%3%3%3%3%3%3%3%3%)@~@4%5%6%q#7%8%9%0%a%2@2@2@2@2@2@2@2@2@2@2@2@2@2@b%c%9%d%e%a$ ",
+" f%g%h%i%h%h%i%h%h%h%i%h%i%h%h%i%h%j%q#k%l%9%m%n%2@;$;$2@;$;$;$2@;$;$2@;$;$2@b%o%9%p%q%r% ",
+" s%t%u%v%v%v%v%v%v%v%v%v%v%v%v%v%v%w%q#x%y%9%z%A%2@2@2@2@2@2@2@2@2@2@2@2@2@2@b%B%9%C%D%8# ",
+" E%F%.#G%H%I%J%K%K%K%J%K%J%K%K%J%K%L%M%N%O%9%P%Q%R%R%S%T%U%V%;$2@W%X%Y%Z%R%R%`% &.&+&@&#& ",
+" .+$&%&&&*&=&-&;&>&,&'&)&)&)&)&)&)&!&.$~&{&]&^&^&/&^&^&(&_&:&;$2@T#<&(&^&^&/&^&^&[&}&|&1& ",
+" .+++/+(+2&3&4&5&G ;.6&7&8&9&0&a&b&c&d&e&f&g&^&^&/&^&^&/&h&i&;$2@T#j&/&^&^&/&^&^&k&l&m&n& ",
+" .+++7+(+8+9+0+a+j+o&p&q&r&M w.s&t&C l@0.u&v&/&/&/&/&/&/&h&i&2@2@T#j&/&/&/&/&/&/&w&x&y& ",
+" .+++/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P.z&A&B&C&^&/&^&^&/&h&i&;$2@T#j&/&^&^&/&D&E&F&G&H& ",
+" .+++/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P.I&q#J&K&L&/&^&^&/&h&i&;$2@T#j&/&^&^&/&M&N&O&G# ",
+" P&++7+(+8+9+0+a+j+k+l+u+n+o+v+q+{.r+P.w+Q&0.R&S&L&/&/&/&^&T&U&U&V&W&/&/&/&X&Y&Z&`& * ",
+" .*+*/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P.q.).@*#*$*%*&*L&/&^&^&^&/&^&^&/&L&**=*-*;*>* ",
+" ,*S+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P.q.).I '*)*!*~*{*]*L&^&^&/&D&^*/*(*_*:*`&<* ",
+" [*}*|*1*a+j+k+l+u+n+o+v+q+{.r+P.w+).I |+J#2*V%3*4*5*6*7*8*9*0*a*b*c*r% ",
+" d*e*f*g*h*i*j*6.(.^.{.r+P.n.k*l*m*v n*o*p*q*r*s*t*u*v*w*x*y*z* ",
+" A*B*C*D*E*F*G*G*H*I*J* K*L*#&M*N*O* "};