summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README31
-rw-r--r--vmchooser/Makefile21
-rw-r--r--vmchooser/SWindow.cxx126
-rw-r--r--vmchooser/SessChoo.kdevelop.filelist1
-rw-r--r--vmchooser/SessChoo.kdevelop.pcsbin73549 -> 132746 bytes
-rw-r--r--vmchooser/SessChoo.kdevses23
-rw-r--r--vmchooser/img/gnome.xpm381
-rw-r--r--vmchooser/img/kde.xpm1636
-rw-r--r--vmchooser/img/linux.xpm676
-rw-r--r--vmchooser/img/xp.xpm1308
-rw-r--r--vmchooser/img/xp_locked.xpm1406
-rw-r--r--vmchooser/inc/DataEntry.h4
-rw-r--r--vmchooser/inc/SWindow.h66
-rw-r--r--vmchooser/inc/functions.h4
-rw-r--r--vmchooser/main.cxx156
-rw-r--r--vmchooser/readXmlDir.cxx442
-rw-r--r--vmchooser/runImage.cxx73
-rw-r--r--vmchooser/vmchooser.kdevelop (renamed from vmchooser/SessChoo.kdevelop)52
18 files changed, 6053 insertions, 353 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..faef5a1
--- /dev/null
+++ b/README
@@ -0,0 +1,31 @@
+
+VM Chooser Helper Program
+==================================
+
+This is the program used by the vmchooser-plugin, which
+is part of the openslx-system.
+
+You just need to compile this, if you have local changes.
+The most recent svn version is also included in binary format
+in the main folder of this openslx-distribution.
+
+Enter "make" to compile everything.
+Enter "make install" to install it to the proper path
+of the svn distribution of openslx. Do not forget to
+enter "make install" in openslx/trunk .
+
+Needed libraries to compile:
+ - All sorts of X libs
+ - fltk-2 (see note *)
+ - libxml2
+ - libboost-regex_s (static -
+ a dynamic version can be enabled by changing the Makefile)
+
+Needed libraries to run:
+ - All sorts of X libs
+ - libxml2
+
+===================================
+* Some static libraries of fltk-2 - svn version - are located
+in fltk-2/ and could be used to link against this program.
+- as images are enabled, you should have libjpeg and libpng too.
diff --git a/vmchooser/Makefile b/vmchooser/Makefile
index 0512069..81cdfa9 100644
--- a/vmchooser/Makefile
+++ b/vmchooser/Makefile
@@ -1,20 +1,24 @@
-STATIC= -static
+STATIC=# -static
CXX=g++
-CFLAGS=-c -O2 -I../fltk-2/include/ -I. -Wall
+CFLAGS=-c -O2 -I../fltk-2/include/ -I. -Wall -g3
XMLFLAG=`xml2-config --cflags`
-LDFLAGS=`../fltk-2/bin/fltk2-config --ldstaticflags` -lXrender -lfontconfig -lxml2 -lXft -lXdmcp -lXau -ldl -lz -lfreetype -lX11
+BOOST=-lboost_regex-s
+LDFLAGS=-L../fltk-2/lib/ ../fltk-2/lib/libfltk2.a -lpng ../fltk-2/lib/libfltk2_images.a -ljpeg -lz -lXi -lXinerama -lpthread -lm -lXext -lsupc++ -lXrender -lfontconfig -lxml2 -lXft -lXdmcp -lXau -ldl -lz -lfreetype -lX11
-all: main SWindow readXmlDir runImage
- ${CXX} ${STATIC} main.o SWindow.o runImage.o readXmlDir.o -o vmchooser ${LDFLAGS}
+all: main SWindow readXmlDir readLinSess runImage
+ ${CXX} ${STATIC} main.o SWindow.o runImage.o readLinSess.o readXmlDir.o -o vmchooser ${LDFLAGS} ${BOOST}
strip vmchooser
-
+
SWindow:
${CXX} ${CFLAGS} -c SWindow.cxx -o SWindow.o
readXmlDir:
${CXX} ${CFLAGS} ${XMLFLAG} -o readXmlDir.o readXmlDir.cxx
+readLinSess:
+ ${CXX} ${CFLAGS} -o readLinSess.o readLinSess.cxx
+
runImage:
${CXX} ${CFLAGS} -o runImage.o runImage.cxx
@@ -23,4 +27,7 @@ main:
clean:
- rm -rf *.o vmchooser
+ rm -rf *.o test
+
+install:
+ cp vmchooser ../../../../../../openslx/trunk/os-plugins/plugins/vmchooser/files/
diff --git a/vmchooser/SWindow.cxx b/vmchooser/SWindow.cxx
index d37fb01..c7a8a9a 100644
--- a/vmchooser/SWindow.cxx
+++ b/vmchooser/SWindow.cxx
@@ -1,59 +1,116 @@
#include "inc/SWindow.h"
+
#include <iostream>
+#include <img/gnome.xpm>
+#include <img/kde.xpm>
+#include <img/linux.xpm>
+#include <img/xp.xpm>
+#include <img/xp_locked.xpm>
+
+
using namespace fltk;
using namespace std;
+/********************************************************
+ * Callback for ReturnButton at the bottom of the GUI
+ * ----------------------------------------------------
+ * Should start chosen session entry
+ *********************************************************/
void SWindow::cb_return()
{
- // TODO start something
- cout << " Pressed Button!" << endl;
+ //cout << " Pressed Button!" << endl;
+ if(curr != 0 && curr->user_data()) {
+ DataEntry* dat = (DataEntry*) curr->user_data();
+ runImage(curr, dat);
+ }
}
+/*******************************************************
+ * Callback for Selection-Browser in the center
+ * ----------------------------------------------------
+ * Changes info-Text at the bottom
+ *******************************************************/
void SWindow::cb_select()
{
+ sel.select_only_this();
if (sel.item_is_parent() )
{
sel.set_item_opened(true);
}
+ if( curr == sel.item() ) {
+ //Doubleclick
+ if(curr->user_data()) {
+ runImage(curr, (DataEntry*) curr->user_data() );
+ }
+ return;
+ }
+ curr = (Item*) sel.item();
+ //cout << it->user_data() << endl;
+ if(curr->user_data()) {
+ DataEntry* dat = (DataEntry*) curr->user_data();
+ info.text(dat->description.c_str());
+ }
}
-
+/**
+ * Callback for TextDisplay at the bottom - change it?
+ */
void SWindow::cb_info()
{
}
-void SWindow::set_lin_entries(DataEntry** ent)
+
+/**********************************************************
+ * Put entries in a Linux-Session Group into Browser
+ *********************************************************/
+void SWindow::set_lin_entries(DataEntry** ent, char* slxgroup)
{
this->lin_ent = ent;
- lin_entgroup = (ItemGroup*) sel.add_group("------- LINUX DESKTOP ------");
+ lin_entgroup = (ItemGroup*) sel.add_group("LINUX DESKTOP", &sel);
+
for (int i=0; ent[i] != NULL; i++)
{
- sel.add_leaf(ent[i]->short_description.c_str() , lin_entgroup, (void*)ent[i] );
+ if( ent[i]->pools.empty() || ent[i]->pools.find(slxgroup) != string::npos) {
+ Item* w= (Item*)sel.add_leaf(ent[i]->short_description.c_str() , lin_entgroup, (void*)ent[i] );
+
+ // Why is just "new" working here ???
+ ((Widget*) w)->image(new xpmImage(get_symbol(ent[i])));
+ w->callback(&runImage, (void*)ent[i]);
+ }
}
lin_entgroup->end();
}
-void SWindow::set_entries(DataEntry** ent)
+
+/**********************************************************
+ * Put entries in a VMWARE-Session Group into Browser
+ *********************************************************/
+void SWindow::set_entries(DataEntry** ent, char* slxgroup)
{
this->ent = ent;
- entgroup = (ItemGroup*)sel.add_group("-------- VMWARE ----------");
+ entgroup = (ItemGroup*)sel.add_group("VMWARE SESSIONS", &sel);
for (int i=0; ent[i] != NULL; i++)
{
- sel.add_leaf(ent[i]->short_description.c_str(), lin_entgroup, (void*)ent[i] );
- }
- for (int c=0; c < 5; c++)
- {
- sel.add_leaf("Blubber 1", entgroup);
+ if(ent[i]->pools.empty() || ent[i]->pools.find(slxgroup) != string::npos) {
+ Item* w= (Item*)sel.add_leaf(ent[i]->short_description.c_str(), entgroup, (void*)ent[i] );
+
+ // Why is just "new" working here ??
+ ((Widget*) w)->image(new xpmImage(get_symbol(ent[i])));
+ w->callback(&runImage, (void*)ent[i]);
+ }
}
+
entgroup->end();
}
-
+/**************************************************************
+ * free arrays (which are dynamically allocated)
+ **************************************************************/
void SWindow::free_entries()
{
for (int i=0; ent[i] != NULL; i++)
@@ -63,3 +120,44 @@ void SWindow::free_entries()
free(ent);
}
+
+
+/******************************************************
+ * Small helper function to unfold the 2 parent groups
+ ******************************************************/
+void SWindow::unfold_entries() {
+ sel.goto_index(0);
+ if(sel.item_is_parent() ) {
+ sel.set_item_opened(true);
+ }
+ sel.goto_index(1);
+ if(sel.item_is_parent() ) {
+ sel.set_item_opened(true);
+ }
+ sel.deselect();
+}
+
+
+/******************************************************
+ * Helper function to get symbols for entries
+ ******************************************************/
+char** SWindow::get_symbol(DataEntry* dat) {
+ if(dat->imgtype == VMWARE) {
+ if(dat->locked) {
+ return xp_locked_xpm;
+ }
+ else {
+ return xp_xpm;
+ }
+ }
+ if(dat->imgtype == LINUX) {
+ if(dat->short_description.find("KDE")!= string::npos) {
+ return kde_xpm;
+ }
+ if(dat->short_description.find("GNOME")!= string::npos) {
+ return gnome_xpm;
+ }
+ return linux_xpm;
+ }
+ return linux_xpm;
+}
diff --git a/vmchooser/SessChoo.kdevelop.filelist b/vmchooser/SessChoo.kdevelop.filelist
index 7645f8f..db31ace 100644
--- a/vmchooser/SessChoo.kdevelop.filelist
+++ b/vmchooser/SessChoo.kdevelop.filelist
@@ -6,5 +6,6 @@ inc/DataEntry.h
inc/SWindow.h
inc/functions.h
main.cxx
+readLinSess.cxx
readXmlDir.cxx
runImage.cxx
diff --git a/vmchooser/SessChoo.kdevelop.pcs b/vmchooser/SessChoo.kdevelop.pcs
index 80b8a69..006c1c2 100644
--- a/vmchooser/SessChoo.kdevelop.pcs
+++ b/vmchooser/SessChoo.kdevelop.pcs
Binary files differ
diff --git a/vmchooser/SessChoo.kdevses b/vmchooser/SessChoo.kdevses
index a7624c6..fb9bd17 100644
--- a/vmchooser/SessChoo.kdevses
+++ b/vmchooser/SessChoo.kdevses
@@ -1,19 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version = '1.0' encoding = 'UTF-8'?>
<!DOCTYPE KDevPrjSession>
<KDevPrjSession>
- <DocsAndViews NumberOfDocuments="4" >
- <Doc0 NumberOfViews="1" URL="file:///home/bastian/studium/hiwi/fltk-2/SessChoo/main.cxx" >
- <View0 Encoding="" line="39" Type="Source" />
+ <DocsAndViews NumberOfDocuments="3" >
+ <Doc0 NumberOfViews="1" URL="file:///home/bastian/studium/hiwi/openslx/openslx-src-tools/trunk/os-plugins/plugins/vmchooser/vmchooser/main.cxx" >
+ <View0 Encoding="" line="20" Type="Source" />
</Doc0>
- <Doc1 NumberOfViews="1" URL="file:///home/bastian/studium/hiwi/fltk-2/SessChoo/readXmlDir.cxx" >
- <View0 Encoding="" line="152" Type="Source" />
+ <Doc1 NumberOfViews="1" URL="file:///home/bastian/studium/hiwi/openslx/openslx-src-tools/trunk/os-plugins/plugins/vmchooser/vmchooser/readLinSess.cxx" >
+ <View0 Encoding="" line="33" Type="Source" />
</Doc1>
- <Doc2 NumberOfViews="1" URL="file:///home/bastian/studium/hiwi/fltk-2/SessChoo/runImage.cxx" >
- <View0 Encoding="" line="31" Type="Source" />
+ <Doc2 NumberOfViews="1" URL="file:///home/bastian/studium/hiwi/openslx/openslx-src-tools/trunk/os-plugins/plugins/vmchooser/vmchooser/runImage.cxx" >
+ <View0 Encoding="" line="0" Type="Source" />
</Doc2>
- <Doc3 NumberOfViews="1" URL="file:///home/bastian/studium/hiwi/fltk-2/SessChoo/SWindow.cxx" >
- <View0 Encoding="" line="26" Type="Source" />
- </Doc3>
</DocsAndViews>
<pluginList>
<kdevdebugger>
@@ -22,14 +19,14 @@
</kdevdebugger>
<kdevastyle>
<Extensions ext="*.cpp *.h,*.c *.h,*.cxx *.hxx,*.c++ *.h++,*.cc *.hh,*.C *.H,*.diff,*.inl,*.java,*.moc,*.patch,*.tlh,*.xpm" />
- <AStyle IndentPreprocessors="0" FillCount="4" PadParenthesesOut="1" IndentNamespaces="1" IndentLabels="1" Fill="Tabs" MaxStatement="40" Brackets="Break" MinConditional="-1" IndentBrackets="0" PadParenthesesUn="1" BlockBreak="0" KeepStatements="1" KeepBlocks="1" BlockIfElse="0" IndentSwitches="1" PadOperators="0" FStyle="GNU" IndentCases="0" FillEmptyLines="0" BracketsCloseHeaders="0" BlockBreakAll="0" PadParenthesesIn="1" IndentClasses="1" IndentBlocks="0" FillForce="0" />
+ <AStyle IndentPreprocessors="0" FillCount="4" PadParenthesesOut="1" IndentNamespaces="1" IndentLabels="1" Fill="Tabs" MaxStatement="40" Brackets="Break" MinConditional="-1" IndentBrackets="0" PadParenthesesUn="1" BlockBreak="0" KeepStatements="1" KeepBlocks="1" BlockIfElse="0" IndentSwitches="1" PadOperators="0" FStyle="Linux" IndentCases="0" FillEmptyLines="0" BracketsCloseHeaders="0" BlockBreakAll="0" PadParenthesesIn="1" IndentClasses="1" IndentBlocks="0" FillForce="0" />
</kdevastyle>
<kdevbookmarks>
<bookmarks/>
</kdevbookmarks>
<kdevvalgrind>
<executable path="" params="" />
- <valgrind path="" params="" />
+ <valgrind path="/usr/bin/valgrind" params=" --tool=memcheck --leak-check=yes" />
<calltree path="" params="" />
<kcachegrind path="" />
</kdevvalgrind>
diff --git a/vmchooser/img/gnome.xpm b/vmchooser/img/gnome.xpm
new file mode 100644
index 0000000..3c011e2
--- /dev/null
+++ b/vmchooser/img/gnome.xpm
@@ -0,0 +1,381 @@
+/* XPM */
+static char * gnome_xpm[] = {
+"50 50 328 2",
+" c None",
+". c #777777",
+"+ c #858585",
+"@ c #8D8D8D",
+"# c #909090",
+"$ c #919191",
+"% c #939393",
+"& c #969696",
+"* c #989898",
+"= c #9A9A9A",
+"- c #9C9C9C",
+"; c #9D9D9D",
+"> c #A0A0A0",
+", c #A2A2A2",
+"' c #A4A4A4",
+") c #A6A6A6",
+"! c #A8A8A8",
+"~ c #AAAAAA",
+"{ c #ACACAC",
+"] c #AEAEAE",
+"^ c #B0B0B0",
+"/ c #B2B2B2",
+"( c #B4B4B4",
+"_ c #B6B6B6",
+": c #B8B8B8",
+"< c #BABABA",
+"[ c #BCBCBC",
+"} c #BEBEBE",
+"| c #C0C0C0",
+"1 c #C2C2C2",
+"2 c #C4C4C4",
+"3 c #C7C7C7",
+"4 c #C8C8C8",
+"5 c #CACACA",
+"6 c #CDCDCD",
+"7 c #CFCFCF",
+"8 c #D1D1D1",
+"9 c #D3D3D3",
+"0 c #D5D5D5",
+"a c #717171",
+"b c #9E9E9E",
+"c c #CCCCCC",
+"d c #CECECE",
+"e c #D0D0D0",
+"f c #D2D2D2",
+"g c #D8D8D8",
+"h c #DADADA",
+"i c #DCDCDC",
+"j c #DEDEDE",
+"k c #E0E0E0",
+"l c #E2E2E2",
+"m c #E5E5E5",
+"n c #E8E8E8",
+"o c #EAEAEA",
+"p c #ECECEC",
+"q c #EEEEEE",
+"r c #F0F0F0",
+"s c #F3F3F3",
+"t c #EFEFEF",
+"u c #7C7C7C",
+"v c #949494",
+"w c #999999",
+"x c #5D5D5D",
+"y c #464646",
+"z c #3F3F3F",
+"A c #404040",
+"B c #414141",
+"C c #424242",
+"D c #434343",
+"E c #444444",
+"F c #474747",
+"G c #484848",
+"H c #494949",
+"I c #4A4A4A",
+"J c #4B4B4B",
+"K c #4C4C4C",
+"L c #4D4D4D",
+"M c #4E4E4E",
+"N c #4F4F4F",
+"O c #505050",
+"P c #515151",
+"Q c #525252",
+"R c #535353",
+"S c #545454",
+"T c #555555",
+"U c #565656",
+"V c #575757",
+"W c #585858",
+"X c #5A5A5A",
+"Y c #686868",
+"Z c #F2F2F2",
+"` c #F6F6F6",
+" . c #F7F7F7",
+".. c #6E6E6E",
+"+. c #929292",
+"@. c #7F7F7F",
+"#. c #2E2E2E",
+"$. c #222222",
+"%. c #626262",
+"&. c #616161",
+"*. c #606060",
+"=. c #5F5F5F",
+"-. c #5E5E5E",
+";. c #5C5C5C",
+">. c #5B5B5B",
+",. c #595959",
+"'. c #333333",
+"). c #D6D6D6",
+"!. c #F8F8F8",
+"~. c #F9F9F9",
+"{. c #707070",
+"]. c #101010",
+"^. c #242424",
+"/. c #FAFAFA",
+"(. c #121212",
+"_. c #676767",
+":. c #E9E9E9",
+"<. c #FCFCFC",
+"[. c #787878",
+"}. c #959595",
+"|. c #343434",
+"1. c #8E8E8E",
+"2. c #D4D4D4",
+"3. c #7E7E7E",
+"4. c #282828",
+"5. c #8A8A8A",
+"6. c #C9C9C9",
+"7. c #ABABAB",
+"8. c #202020",
+"9. c #808080",
+"0. c #818181",
+"a. c #9D9E9D",
+"b. c #C3C3C3",
+"c. c #9E9F9E",
+"d. c #898989",
+"e. c #FEFEFE",
+"f. c #FFFFFF",
+"g. c #454545",
+"h. c #DFDFDF",
+"i. c #747474",
+"j. c #757575",
+"k. c #767676",
+"l. c #999A99",
+"m. c #CBCBCB",
+"n. c #6A6A6A",
+"o. c #656565",
+"p. c #6F6F6F",
+"q. c #232323",
+"r. c #6B6B6B",
+"s. c #7F807F",
+"t. c #B8B9B8",
+"u. c #6C6C6C",
+"v. c #E2E3E2",
+"w. c #868686",
+"x. c #020202",
+"y. c #000000",
+"z. c #090909",
+"A. c #1A1A1A",
+"B. c #181818",
+"C. c #646464",
+"D. c #BBBCBB",
+"E. c #ECEDEC",
+"F. c #7B7C7B",
+"G. c #B8BAB8",
+"H. c #D7D8D7",
+"I. c #B1B2B1",
+"J. c #1F1F1F",
+"K. c #262626",
+"L. c #3D3D3D",
+"M. c #858685",
+"N. c #B3B4B3",
+"O. c #5D5E5D",
+"P. c #CDCECD",
+"Q. c #030303",
+"R. c #363636",
+"S. c #C4C5C4",
+"T. c #7D7E7D",
+"U. c #DFE0DF",
+"V. c #6F706F",
+"W. c #373737",
+"X. c #1D1D1D",
+"Y. c #BFC0BF",
+"Z. c #FDFDFD",
+"`. c #0E0E0E",
+" + c #292929",
+".+ c #2F2F2F",
+"++ c #7E7F7E",
+"@+ c #C8C9C8",
+"#+ c #939493",
+"$+ c #F4F4F4",
+"%+ c #656665",
+"&+ c #565756",
+"*+ c #515251",
+"=+ c #161616",
+"-+ c #707170",
+";+ c #2A2A2A",
+">+ c #272727",
+",+ c #383838",
+"'+ c #404140",
+")+ c #C6C7C6",
+"!+ c #646564",
+"~+ c #8C8E8C",
+"{+ c #A3A4A3",
+"]+ c #1C1C1C",
+"^+ c #0C0C0C",
+"/+ c #616261",
+"(+ c #313131",
+"_+ c #060606",
+":+ c #2C2C2C",
+"<+ c #323332",
+"[+ c #ACADAC",
+"}+ c #808180",
+"|+ c #5C5D5C",
+"1+ c #707270",
+"2+ c #777877",
+"3+ c #717271",
+"4+ c #575857",
+"5+ c #313231",
+"6+ c #0F100F",
+"7+ c #2D2D2D",
+"8+ c #191919",
+"9+ c #4D4E4D",
+"0+ c #808280",
+"a+ c #3C3D3C",
+"b+ c #717471",
+"c+ c #B4B6B4",
+"d+ c #F1F1F1",
+"e+ c #1B1B1B",
+"f+ c #525452",
+"g+ c #B9BAB9",
+"h+ c #4E4F4E",
+"i+ c #636563",
+"j+ c #CECFCE",
+"k+ c #FBFBFB",
+"l+ c #141514",
+"m+ c #303030",
+"n+ c #0B0B0B",
+"o+ c #171817",
+"p+ c #0B0C0B",
+"q+ c #676967",
+"r+ c #EDEEED",
+"s+ c #252625",
+"t+ c #050505",
+"u+ c #040404",
+"v+ c #565856",
+"w+ c #323232",
+"x+ c #DADBDA",
+"y+ c #959695",
+"z+ c #070707",
+"A+ c #232423",
+"B+ c #353535",
+"C+ c #D4D5D4",
+"D+ c #C1C2C1",
+"E+ c #252525",
+"F+ c #E6E6E6",
+"G+ c #212121",
+"H+ c #D9D9D9",
+"I+ c #0C0D0C",
+"J+ c #3A3A3A",
+"K+ c #121312",
+"L+ c #C6C6C6",
+"M+ c #2C2D2C",
+"N+ c #3B3B3B",
+"O+ c #929392",
+"P+ c #6C6D6C",
+"Q+ c #494A49",
+"R+ c #787978",
+"S+ c #5A5B5A",
+"T+ c #1E1E1E",
+"U+ c #010201",
+"V+ c #3C3C3C",
+"W+ c #424342",
+"X+ c #686A68",
+"Y+ c #444544",
+"Z+ c #393A39",
+"`+ c #3E3E3E",
+" @ c #0F0F0F",
+".@ c #B0B1B0",
+"+@ c #E7E7E7",
+"@@ c #3D3E3D",
+"#@ c #E8E9E8",
+"$@ c #787A78",
+"%@ c #080808",
+"&@ c #E3E3E3",
+"*@ c #828282",
+"=@ c #010101",
+"-@ c #EDEDED",
+";@ c #A1A1A1",
+">@ c #262726",
+",@ c #7D7D7D",
+"'@ c #292A29",
+")@ c #090A09",
+"!@ c #636363",
+"~@ c #D7D7D7",
+"{@ c #888888",
+"]@ c #BFBFBF",
+"^@ c #848484",
+"/@ c #9F9F9F",
+"(@ c #BDBDBD",
+"_@ c #B7B7B7",
+":@ c #171717",
+"<@ c #A7A7A7",
+"[@ c #8C8C8C",
+"}@ c #666666",
+"|@ c #0A0A0A",
+"1@ c #C5C5C5",
+"2@ c #0D0D0D",
+"3@ c #979797",
+"4@ c #797979",
+"5@ c #131313",
+"6@ c #151515",
+"7@ c #838383",
+"8@ c #F5F5F5",
+"9@ c #696969",
+"0@ c #8B8B8B",
+"a@ c #B9B9B9",
+"b@ c #737373",
+"c@ c #A9A9A9",
+"d@ c #6D6D6D",
+"e@ c #727272",
+"f@ c #7A7A7A",
+"g@ c #ADADAD",
+"h@ c #BBBBBB",
+"i@ c #E4E4E4",
+"j@ c #8F8F8F",
+"k@ c #9B9B9B",
+"l@ c #A5A5A5",
+"m@ c #AFAFAF",
+" . + @ # $ % & * = - ; > , ' ) ! ~ { ] ^ / ( _ : < [ } | 1 2 3 4 5 6 7 8 9 0 6 [ ",
+" a % = - b > , ' ! ~ { ] ^ / ( : < [ } | 1 2 4 5 c d e f 0 g h i j k l m n o p q r s t < ",
+" u v & w + x y z z A B C D D E y y F G H I J K L L M N O P Q Q R S T U V W W X Y # f Z ` .7 ",
+" ..+.v @.#.$.W %.%.&.*.*.*.=.=.-.-.x x ;.;.;.>.>.X X ,.,.W W V V U U U T T S S S R P '.S ).!.~.< ",
+" @ +.{.].X , ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ) {.^.2 /.s ",
+"..# + (._.; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; {.^.:.<.1 ",
+"[.# J B % v % % v v v % % % % v v % % % v % v % v v v % % % v v v }.v v % % v % % % % v % +.|.1.<.2.",
+"3.$ 4.%.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.$ ( 6 6.7.1.5.5.5.5.5.5.5.5.5.I P <.i ",
+"@.+.8.;.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.0.a.b.c.9.9.9.d.6 e.f.f.<._ 9.9.9.9.9.9.9.9.9.g.E <.h.",
+"@.+.$.S i.j.j.i.j.i.j.i.j.j.j.j.i.j.i.k.j.i.j.l.r f.g u j.[.: e.f.f.f.f.m.n.X Q N Q >.o.p.i.A g.<.h.",
+"@.+.q.K r.r.n.n.r.n.n.r.n.r.n.r.n.r.s.t.b ..u.| f.f.v.. r.w.Z f.f.f.f.f.{.x.y.y.y.y.y.x.z.A.B.y <.h.",
+"@.+.^.g.*.*.*.*.*.*.*.*.*.*.*.*.*.C.D.f.E.F.%.G.f.f.H.n.%.I.f.f.f.f.f.k J.y.y.y.y.y.y.y.y.y.y.G <.h.",
+"@.+.K.L.U U U U U U V U U U U U U *.).f./.M.U +.<.f.N.,.O.P.f.f.f.f./.n.Q.y.y.y.y.y.y.y.y.y.y.H <.h.",
+"@.+.4.R.K K K K K K K K K K L Q L Q S.f./.T.K *.d U.V.W.X.Y.f.f.f.Z.$ `.y.y.y.y.y.y.y.y.y.y.y.I <.h.",
+"@.+. +.+C C C C C C C C C D ++@+#+G ++$+E.%+C C &+*+=+y.Q.-+` f.o F.].y.y.y.y.y.y.y.y.y.y.y.y.J <.h.",
+"@.+.;+>+,+,+,+,+,+,+,+,+,+'+)+f.r !+z ~+{+B ,+R.]+Q.y.y.y.^+G /+(+_+y.y.y.y.y.y.y.y.y.y.y.y.y.K <.h.",
+"@.% :+8.#.#.#.#.#.#.#.#.#.<+[+f.e.}+#..+(+#.;+:+'+|+1+2+3+4+5+6+y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.L <.h.",
+"@.% 7+8+^.^.^.^.^.^.^.^.^.^.9+h f.0+^.^.a+b+c+j ` f.f.f.f.f.d+N.R.y.y.y.y.y.y.y.y.y.y.y.y.y.y.M <.h.",
+"@.% #.(.A.A.A.A.A.A.A.A.A.A.e+f+g+h+]+i+j+k+f.f.f.f.f.f.f.f.f.f.b.l+y.y.y.y.y.y.y.y.y.y.y.y.y.O <.h.",
+"@.% m+n+].].].].].].].].].].].].o+p+q+r+f.f.f.f.f.f.f.f.f.f.f.f.Z s+y.y.y.y.y.y.y.y.y.y.y.y.y.P <.h.",
+"@.v (+x.t+_+_+_+_+_+_+_+t+u+x.y.x.v+:.f.f.f.f.f.f.f.f.f.f.f.f.f.k X.y.y.y.y.y.y.y.y.y.y.y.y.y.Q <.h.",
+"@.v w+y.y.y.y.y.y.y.y.y.y.y.y.y.<+x+f.f.f.f.f.f.f.f.f.f.f.f.f.f.y+z+y.y.y.y.y.y.y.y.y.y.y.y.y.Q <.h.",
+"@.v |.y.y.y.y.y.y.y.y.y.y.y.y._+l.f.f.f.f.f.f.f.f.f.f.f.f.f.f.3 A+y.y.y.y.y.y.y.y.y.y.y.y.y.y.S <.h.",
+"@.v B+y.y.y.y.y.y.y.y.y.y.y.y.e+C+f.f.f.f.f.f.f.f.f.f.f.f.f.D+#.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.T <.h.",
+"@.v W.y.y.y.y.y.y.y.y.y.y.y.y.E+F+f.f.f.f.f.f.f.f.f.f.f.~.- G+y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.U <.h.",
+"@.v ,+y.y.y.y.y.y.y.y.y.y.y.y.8.k f.f.f.f.f.f.f.f.f.f.H+;.I+y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.V <.h.",
+"@.v J+y.y.y.y.y.y.y.y.y.y.y.y.K+L+f.f.f.f.f.f.f.f.~.{+M+x.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.W <.h.",
+"@.v N+y.y.y.y.y.y.y.y.y.y.y.y.u+O+f.f.f.f.f.f.f.t P+6+y.z.Q+R+S+T+U+y.y.y.y.y.y.y.y.y.y.y.y.y.,.<.h.",
+"@.}.V+y.y.y.y.y.y.y.y.y.y.y.y.y.W+` f.f.f.f.f./.X+_+y.y.Y+s f.f.C+Z+y.y.y.y.y.y.y.y.y.y.y.y.y.X <.h.",
+"@.}.`+y.y.y.y.y.y.y.y.y.y.y.y.y. @.@f.f.f.f.f.+@>+y.y.t+#+f.f.f.f.+ x.y.y.y.y.y.y.y.y.y.y.y.y.>.<.h.",
+"@.}.z y.y.y.y.y.y.y.y.y.y.y.y.y.y.@@#@f.f.f.f.<.$@%@y.:+&@f.f.f.e.W y.y.y.y.y.y.y.y.y.y.y.y.y.x <.h.",
+"@.}.A y.y.y.y.y.y.y.y.y.y.y.y.y.y.t+P+!.f.f.f.f.$+*@I < f.f.f.f.5 =+y.y.y.y.y.y.y.y.y.y.y.y.y.-.<.h.",
+"@.& C y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.^+T.!.f.f.f.f.f.Z.f.f.f.f.q G =@y.y.y.y.y.y.y.y.y.y.y.y.y.=.<.h.",
+"@.& D y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.n+Y F+f.f.f.f.f.f.f.f.&@S t+y.y.y.y.y.y.y.y.y.y.y.y.y.y.*.<.h.",
+"@.& g.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.u+5+b n e.f.f.f.-@;@#.Q.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.&.<.h.",
+"@.& y y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.z.>@W ,@++-.'@)@y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.%.<.h.",
+"@.& G y.y.y.y.y.=@u+=@y.y.y.y.y.y.y.y.y.y.y.y.=@u+=@y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.!@<.h.",
+"@.& H y.y.y.z.j.L+~@1 {.y.D } % x.z+{ {@y.y.O [ g ]@W x.y.^@} 0.y.y.o.} /@=@;.} } } } I H ,+R.o.<.h.",
+"@.& I y.y.=@' e.(@3.& 2 x.X f.<.N+z.F+_@y.O k+f 9.c <.-.y./ f.t :@z+H+f.).=@u f.} <@<@m+!@* [@}@<.h.",
+"@.& K y.y.:+<.} u+y.y._+y.X f.t _@|@F+_@=@1@` $.y.B.d+9 =@/ ` F+..I s +@).=@u f.M ]. @x.2@^+2@_.<.h.",
+"@.3@L y.y.V f.4@y.U 1.5.5@X f.+ !.E F+_@z+F+i Q.y.x.d $+z+/ q d.8 / ! d ).=@u f.` Z o 6@y.y.y.Y <.h.",
+"@.3@M y.y.O f.7@y.n.h /.$.X f.M / | n _@t+l l _+y.Q.).r t+/ q ;+8@<.E d ).=@u f.[@!@=.%@y.y.y.9@<.h.",
+"3.}.W y.y.A.s i e+y.0@/.$.X f.K R./.e._@y.7.<.I =@`+/.a@y./ q z+] d _+d ).=@u f.J n+n+u+y.y.y.b@<.i ",
+". # 3.y.y.y.r.~.q 5 q ` 8.X f.K =@/ f._@y.4.F+` 6 $+o w+y./ q _+|@`.=@d ).=@u f.Z p p M y.y.y.c@<.2.",
+"..# c@8.y.y.y.(+u [@{.;+=@>+d@G+y.K.d@M y.y.B.p.1.e@]+y.y.K }@Q.y.y.y.W >.y.B+d@d@d@d@^.y.y.#.Z <.1 ",
+" [@v > :@y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.J.e /.s ",
+" d@+.* c@M u+y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y._+>.j !.~.a@ ",
+" f@v 3@<@g@+ n.*.=.=.=.=.*.*.*.*.*.*.*.*.*.*.*.&.&.&.&.&.&.%.%.%.%.%.%.%.%.%.C.a w h $+` .d ",
+" a % = - b , <@c@{ ] ^ / ( _ : h@(@]@1 2 L+4 5 c d e 9 0 ~@h i j k l i@F+n o p q r s q a@ ",
+" . ^@@ j@$ % }.3@w k@; /@;@' l@<@~ { ] m@/ ( _ : < [ } | 1 2 L+4 5 c 7 e f 2.c h@ "};
diff --git a/vmchooser/img/kde.xpm b/vmchooser/img/kde.xpm
new file mode 100644
index 0000000..e17ef3b
--- /dev/null
+++ b/vmchooser/img/kde.xpm
@@ -0,0 +1,1636 @@
+/* XPM */
+static char * kde_xpm[] = {
+"50 50 1583 2",
+" c #FFFFFF",
+". c #D9DAE9",
+"+ c #6975AF",
+"@ c #2E4190",
+"# c #203489",
+"$ c #203689",
+"% c #213689",
+"& c #203688",
+"* c #223789",
+"= c #233889",
+"- c #233989",
+"; c #243A8A",
+"> c #243B8A",
+", c #253C8A",
+"' c #253C89",
+") c #263E89",
+"! c #263E8A",
+"~ c #273F8A",
+"{ c #28408A",
+"] c #28418A",
+"^ c #29428A",
+"/ c #2A428A",
+"( c #2A438A",
+"_ c #2B448A",
+": c #2C448A",
+"< c #2C448B",
+"[ c #2C468A",
+"} c #2D478A",
+"| c #2E488A",
+"1 c #2F488B",
+"2 c #30498A",
+"3 c #314A8C",
+"4 c #314A8B",
+"5 c #314B8A",
+"6 c #324B8B",
+"7 c #324C8B",
+"8 c #405793",
+"9 c #7586B0",
+"0 c #DADFE9",
+"a c #A8AED0",
+"b c #09207F",
+"c c #15308D",
+"d c #24429C",
+"e c #26449E",
+"f c #25449E",
+"g c #24449E",
+"h c #24459F",
+"i c #24469F",
+"j c #24479F",
+"k c #2448A0",
+"l c #2347A0",
+"m c #22479F",
+"n c #22489F",
+"o c #2249A0",
+"p c #22499F",
+"q c #224A9F",
+"r c #224AA0",
+"s c #214AA0",
+"t c #214BA0",
+"u c #214CA2",
+"v c #204CA2",
+"w c #204CA1",
+"x c #204DA2",
+"y c #204EA2",
+"z c #204FA2",
+"A c #1F50A3",
+"B c #1F4FA3",
+"C c #1E51A2",
+"D c #1E51A3",
+"E c #1E52A4",
+"F c #1E50A2",
+"G c #1D4692",
+"H c #223E81",
+"I c #AEB8D0",
+"J c #CFD2E4",
+"K c #081F7E",
+"L c #2A48A2",
+"M c #5470BC",
+"N c #AEBCDF",
+"O c #D0D8ED",
+"P c #D1D8ED",
+"Q c #D0D9ED",
+"R c #D0D9EE",
+"S c #D0D8EE",
+"T c #CFD9EE",
+"U c #CED9EE",
+"V c #CDDAEE",
+"W c #CDD9EE",
+"X c #CCDAEE",
+"Y c #CCDAEF",
+"Z c #CBD9EE",
+"` c #A3BEE2",
+" . c #3A74C3",
+".. c #1D56A9",
+"+. c #223F80",
+"@. c #D2D8E5",
+"#. c #5462A4",
+"$. c #1A3592",
+"%. c #5874BE",
+"&. c #D3DAEC",
+"*. c #4E6FB8",
+"=. c #1F48A8",
+"-. c #1E48A8",
+";. c #1E48A7",
+">. c #1E48A6",
+",. c #1E47A7",
+"'. c #1E47A6",
+"). c #1E46A6",
+"!. c #1E46A5",
+"~. c #1E45A5",
+"{. c #1E44A4",
+"]. c #1D45A5",
+"^. c #1C44A5",
+"/. c #1C45A6",
+"(. c #1B46A6",
+"_. c #1A46A6",
+":. c #1946A6",
+"<. c #1846A6",
+"[. c #1746A6",
+"}. c #1646A7",
+"|. c #1546A8",
+"1. c #1447A7",
+"2. c #1347A7",
+"3. c #1247A8",
+"4. c #1148A8",
+"5. c #1048A8",
+"6. c #0F48AA",
+"7. c #0E48AA",
+"8. c #0D48AA",
+"9. c #0C48AA",
+"0. c #0A49AA",
+"a. c #0949AB",
+"b. c #0849AB",
+"c. c #074AAC",
+"d. c #054AAC",
+"e. c #064AAC",
+"f. c #476FBA",
+"g. c #D1DAEC",
+"h. c #3E79C7",
+"i. c #1D4B97",
+"j. c #6578A6",
+"k. c #122882",
+"l. c #2B49A3",
+"m. c #BEC9E5",
+"n. c #476AB6",
+"o. c #6789CB",
+"p. c #B3CAE8",
+"q. c #B9CEEA",
+"r. c #B8CDE9",
+"s. c #B8CDEA",
+"t. c #B9CCE9",
+"u. c #B9CDE9",
+"v. c #B8CDE8",
+"w. c #B8CCE8",
+"x. c #B8CCE9",
+"y. c #B7CCE9",
+"z. c #B6CCE9",
+"A. c #B5CDE9",
+"B. c #B4CCEA",
+"C. c #B3CDEA",
+"D. c #B2CDEA",
+"E. c #B2CEEA",
+"F. c #B1CEEB",
+"G. c #B0CEEB",
+"H. c #B0CEEC",
+"I. c #AFCEEC",
+"J. c #AECEEC",
+"K. c #A6CAEB",
+"L. c #438AD1",
+"M. c #3E6AB8",
+"N. c #B4CBE8",
+"O. c #1C57AA",
+"P. c #2C4885",
+"Q. c #021C7B",
+"R. c #2C4CA6",
+"S. c #D2DAED",
+"T. c #2856B0",
+"U. c #B5D0EC",
+"V. c #C2DBF1",
+"W. c #C2DAF0",
+"X. c #C2D9F0",
+"Y. c #C2D8F0",
+"Z. c #C2D8EF",
+"`. c #C2D9EF",
+" + c #C1DAEF",
+".+ c #C1D9F0",
+"++ c #C0D9F0",
+"@+ c #C0DAF0",
+"#+ c #BFDAF0",
+"$+ c #BEDAF0",
+"%+ c #BEDAF1",
+"&+ c #BDDAF0",
+"*+ c #BDDAF1",
+"=+ c #BCDAF1",
+"-+ c #BCDAF2",
+";+ c #BBDAF2",
+">+ c #AACFED",
+",+ c #0B55B4",
+"'+ c #D0DBEE",
+")+ c #1C59AD",
+"!+ c #203E7F",
+"~+ c #021C7C",
+"{+ c #2B4BA4",
+"]+ c #CED7EC",
+"^+ c #2D5CB4",
+"/+ c #B1D0EC",
+"(+ c #B5D3EE",
+"_+ c #B5D2EE",
+":+ c #B6D2EE",
+"<+ c #B4D2EE",
+"[+ c #B5D2ED",
+"}+ c #B4D2EC",
+"|+ c #B4D2ED",
+"1+ c #B4D1EC",
+"2+ c #8CB3DD",
+"3+ c #96BAE0",
+"4+ c #9CBFE2",
+"5+ c #A4C5E5",
+"6+ c #AACAE7",
+"7+ c #B2CFEA",
+"8+ c #89B7E0",
+"9+ c #B2D0EC",
+"0+ c #B3D1EC",
+"a+ c #B2D1EC",
+"b+ c #B2D1ED",
+"c+ c #B0D1ED",
+"d+ c #92C3E8",
+"e+ c #98C8EA",
+"f+ c #88C0E7",
+"g+ c #9ECAEA",
+"h+ c #AFD2ED",
+"i+ c #AED2ED",
+"j+ c #AED2EE",
+"k+ c #ADD2EE",
+"l+ c #ACD2EE",
+"m+ c #A7CEEC",
+"n+ c #105AB6",
+"o+ c #CCD8EC",
+"p+ c #1A58AE",
+"q+ c #213F7F",
+"r+ c #031E7B",
+"s+ c #2B4BA5",
+"t+ c #CED8EC",
+"u+ c #3060B7",
+"v+ c #A5C8EA",
+"w+ c #A8CBEB",
+"x+ c #A8CCEB",
+"y+ c #A8CCEC",
+"z+ c #A8CBEC",
+"A+ c #A8CAEA",
+"B+ c #A8CAE9",
+"C+ c #A8C9E8",
+"D+ c #A6C8E8",
+"E+ c #C0D2E9",
+"F+ c #FEFFFF",
+"G+ c #FCFDFE",
+"H+ c #FEFEFE",
+"I+ c #AFCEE9",
+"J+ c #A6C9E8",
+"K+ c #A5C8E8",
+"L+ c #A4C8E9",
+"M+ c #90BEE5",
+"N+ c #C8E1F2",
+"O+ c #FDFEFE",
+"P+ c #D4E9F7",
+"Q+ c #AED6F0",
+"R+ c #9ACBEC",
+"S+ c #84C0E8",
+"T+ c #86C0E8",
+"U+ c #9FCAEB",
+"V+ c #9ECAEB",
+"W+ c #99C7EA",
+"X+ c #145CB7",
+"Y+ c #CDD8ED",
+"Z+ c #224080",
+"`+ c #041E7B",
+" @ c #2A4CA6",
+".@ c #CFDAED",
+"+@ c #3464BA",
+"@@ c #99C2E8",
+"#@ c #9CC4E9",
+"$@ c #9CC4E8",
+"%@ c #9CC3E8",
+"&@ c #9CC2E8",
+"*@ c #9CC2E7",
+"=@ c #9AC0E6",
+"-@ c #F6FAFE",
+";@ c #E6F1FA",
+">@ c #E2EFF8",
+",@ c #E0EEF8",
+"'@ c #F8FBFD",
+")@ c #AECCE8",
+"!@ c #9AC0E4",
+"~@ c #9AC0E5",
+"{@ c #98C0E5",
+"]@ c #94BEE4",
+"^@ c #A0C9E8",
+"/@ c #DBEBF7",
+"(@ c #DDECF8",
+"_@ c #E8F2FA",
+":@ c #F4F9FC",
+"<@ c #83C2EA",
+"[@ c #92C2E8",
+"}@ c #91C2E8",
+"|@ c #8CBFE7",
+"1@ c #195EB8",
+"2@ c #CEDAEE",
+"3@ c #1958AE",
+"4@ c #234080",
+"5@ c #D0DBED",
+"6@ c #3869BD",
+"7@ c #8FBCE6",
+"8@ c #91BEE6",
+"9@ c #92BEE6",
+"0@ c #91BEE5",
+"a@ c #91BDE6",
+"b@ c #90BDE6",
+"c@ c #91BCE6",
+"d@ c #91BCE5",
+"e@ c #91BCE4",
+"f@ c #8FBAE3",
+"g@ c #C0D1E8",
+"h@ c #F6FAFD",
+"i@ c #E5F1FA",
+"j@ c #E3F0F9",
+"k@ c #E2EEF8",
+"l@ c #F8FCFD",
+"m@ c #ACCAE7",
+"n@ c #90B8E2",
+"o@ c #8FB8E2",
+"p@ c #8EB8E2",
+"q@ c #80B4DF",
+"r@ c #FCFEFE",
+"s@ c #E4F0F9",
+"t@ c #CEE3F4",
+"u@ c #CCE3F4",
+"v@ c #CBE2F4",
+"w@ c #D1E6F5",
+"x@ c #ACD5EF",
+"y@ c #7EB6E3",
+"z@ c #86BAE4",
+"A@ c #85BAE4",
+"B@ c #81B8E3",
+"C@ c #1E62BA",
+"D@ c #CFDBEE",
+"E@ c #195AAE",
+"F@ c #234180",
+"G@ c #05207B",
+"H@ c #D1DCEE",
+"I@ c #3C6EC0",
+"J@ c #84B6E4",
+"K@ c #86B8E4",
+"L@ c #87B8E4",
+"M@ c #86B7E4",
+"N@ c #86B6E3",
+"O@ c #86B6E2",
+"P@ c #86B5E2",
+"Q@ c #85B4E0",
+"R@ c #C0D0E8",
+"S@ c #E7F2FB",
+"T@ c #E5F0FA",
+"U@ c #F9FCFD",
+"V@ c #ABC8E6",
+"W@ c #86B1DE",
+"X@ c #86B1DD",
+"Y@ c #71A7DA",
+"Z@ c #E8F1F8",
+"`@ c #F1F8FB",
+" # c #D2E6F5",
+".# c #CFE4F5",
+"+# c #CEE4F5",
+"@# c #F7FAFD",
+"## c #D0E6F5",
+"$# c #6CACDE",
+"%# c #7CB3E1",
+"&# c #7BB3E1",
+"*# c #7AB3E1",
+"=# c #76B1E0",
+"-# c #2264BB",
+";# c #D0DCEE",
+"># c #185AAE",
+",# c #244280",
+"'# c #05207C",
+")# c #294DA6",
+"!# c #D2DDEE",
+"~# c #3E72C3",
+"{# c #7AB0E2",
+"]# c #7DB2E3",
+"^# c #7DB2E2",
+"/# c #7CB2E2",
+"(# c #7DB1E2",
+"_# c #7DB1E1",
+":# c #7CB0E1",
+"<# c #7CB0E0",
+"[# c #7CAFE0",
+"}# c #7BAEDF",
+"|# c #C0CFE7",
+"1# c #F7FBFD",
+"2# c #E8F3FB",
+"3# c #E8F2FB",
+"4# c #FAFCFE",
+"5# c #A9C6E5",
+"6# c #7CAADC",
+"7# c #7CAADB",
+"8# c #6EA2D7",
+"9# c #C5DBEE",
+"0# c #D8EAF7",
+"a# c #D3E7F6",
+"b# c #EFF6FB",
+"c# c #EDF5FA",
+"d# c #66A9DD",
+"e# c #72ACDD",
+"f# c #70ACDE",
+"g# c #6CAADE",
+"h# c #2668BC",
+"i# c #D1DDEF",
+"j# c #06217C",
+"k# c #284DA6",
+"l# c #D4DEEF",
+"m# c #4276C6",
+"n# c #72ADE2",
+"o# c #74AEE2",
+"p# c #74AEE1",
+"q# c #74ADE1",
+"r# c #73ADE1",
+"s# c #73ACE1",
+"t# c #70ABDF",
+"u# c #82B6E2",
+"v# c #72ABE0",
+"w# c #74ACDF",
+"x# c #74AADF",
+"y# c #74AADE",
+"z# c #73A8DC",
+"A# c #C0CFE6",
+"B# c #F8FBFE",
+"C# c #EAF4FA",
+"D# c #E9F3FC",
+"E# c #E7F2FA",
+"F# c #A6C3E4",
+"G# c #72A5DA",
+"H# c #72A4D9",
+"I# c #6FA2D7",
+"J# c #97BCE1",
+"K# c #D6E8F6",
+"L# c #D4E8F6",
+"M# c #E6F1F9",
+"N# c #72AEDE",
+"O# c #6BA4DB",
+"P# c #69A5DB",
+"Q# c #68A5DB",
+"R# c #67A6DB",
+"S# c #63A3DA",
+"T# c #2B6ABD",
+"U# c #D2DEF0",
+"V# c #254380",
+"W# c #06227B",
+"X# c #284EA6",
+"Y# c #D4DFF0",
+"Z# c #467BC9",
+"`# c #6AA8E0",
+" $ c #6CAAE0",
+".$ c #6CA9E0",
+"+$ c #6CA8E0",
+"@$ c #69A6DE",
+"#$ c #C7DEF1",
+"$$ c #B5D6EE",
+"%$ c #6CA9DF",
+"&$ c #6BA6DE",
+"*$ c #6BA6DD",
+"=$ c #6BA5DC",
+"-$ c #6BA4DC",
+";$ c #69A3DB",
+">$ c #C0CEE6",
+",$ c #ECF4FB",
+"'$ c #EAF4FB",
+")$ c #FBFCFE",
+"!$ c #A3C1E2",
+"~$ c #6A9FD8",
+"{$ c #70A2D6",
+"]$ c #ECF4FA",
+"^$ c #DAEAF7",
+"/$ c #D7EAF7",
+"($ c #DFEEF8",
+"_$ c #94C0E5",
+":$ c #609CD6",
+"<$ c #629ED6",
+"[$ c #609ED7",
+"}$ c #5F9ED8",
+"|$ c #5D9ED8",
+"1$ c #5A9CD8",
+"2$ c #306CBE",
+"3$ c #D3DFF0",
+"4$ c #264480",
+"5$ c #07237C",
+"6$ c #D6E0F0",
+"7$ c #487FCC",
+"8$ c #62A4E0",
+"9$ c #64A5E0",
+"0$ c #63A5E0",
+"a$ c #63A4E0",
+"b$ c #63A4DF",
+"c$ c #62A1DC",
+"d$ c #C5DBF0",
+"e$ c #E6F2FA",
+"f$ c #85B9E4",
+"g$ c #63A1DC",
+"h$ c #63A0DC",
+"i$ c #63A2DC",
+"j$ c #62A0DB",
+"k$ c #C0CEE5",
+"l$ c #EEF5FB",
+"m$ c #EBF4FC",
+"n$ c #FBFDFE",
+"o$ c #A0BEE1",
+"p$ c #629AD5",
+"q$ c #5A93D0",
+"r$ c #E6EFF7",
+"s$ c #F6FAFC",
+"t$ c #DEECF8",
+"u$ c #DCECF8",
+"v$ c #D9EAF7",
+"w$ c #BDD8EE",
+"x$ c #5392D1",
+"y$ c #5B96D3",
+"z$ c #5B97D4",
+"A$ c #5A97D4",
+"B$ c #5898D5",
+"C$ c #5798D5",
+"D$ c #5698D6",
+"E$ c #5297D5",
+"F$ c #3470C0",
+"G$ c #D4E0F1",
+"H$ c #185AB0",
+"I$ c #26457F",
+"J$ c #08237C",
+"K$ c #274DA6",
+"L$ c #D6E1F0",
+"M$ c #4C83CE",
+"N$ c #5CA0DF",
+"O$ c #5CA2DF",
+"P$ c #5CA1DF",
+"Q$ c #5CA1DE",
+"R$ c #5CA0DE",
+"S$ c #9AC0E3",
+"T$ c #B9D8F0",
+"U$ c #8FC0E7",
+"V$ c #D6EAF8",
+"W$ c #5EA2DD",
+"X$ c #C0CDE5",
+"Y$ c #EFF6FC",
+"Z$ c #EBF4FB",
+"`$ c #9CBCE0",
+" % c #518ECF",
+".% c #C1D5EA",
+"+% c #E3F0F8",
+"@% c #DFEDF8",
+"#% c #E0ECF6",
+"$% c #5190CF",
+"%% c #5690D0",
+"&% c #5591D0",
+"*% c #5490D0",
+"=% c #5292D1",
+"-% c #5192D1",
+";% c #4F92D2",
+">% c #4E92D2",
+",% c #4B90D3",
+"'% c #3872C0",
+")% c #D6E1F1",
+"!% c #27467F",
+"~% c #08247D",
+"{% c #264EA6",
+"]% c #D8E2F2",
+"^% c #4F88D2",
+"/% c #569EDF",
+"(% c #579EE0",
+"_% c #569EDE",
+":% c #569DDE",
+"<% c #5D9DD9",
+"[% c #F1F6FA",
+"}% c #589EDB",
+"|% c #C0CCE4",
+"1% c #F2F7FD",
+"2% c #EDF5FB",
+"3% c #98B8DD",
+"4% c #8EB2DA",
+"5% c #EAF3FB",
+"6% c #E2F0F9",
+"7% c #E1EEF8",
+"8% c #F0F7FC",
+"9% c #F7FAFC",
+"0% c #5C96D0",
+"a% c #538ACC",
+"b% c #518ACC",
+"c% c #508ACC",
+"d% c #4E8CCD",
+"e% c #4C8CCE",
+"f% c #4B8CCE",
+"g% c #498CCF",
+"h% c #488CD0",
+"i% c #458AD0",
+"j% c #3D75C2",
+"k% c #D7E2F2",
+"l% c #175BB0",
+"m% c #284680",
+"n% c #09257C",
+"o% c #D9E4F2",
+"p% c #538CD4",
+"q% c #509BDF",
+"r% c #509CDF",
+"s% c #509BDE",
+"t% c #509ADE",
+"u% c #8FB9E1",
+"v% c #FEFEFF",
+"w% c #E9F3FA",
+"x% c #5299D9",
+"y% c #F3F8FC",
+"z% c #EFF5FB",
+"A% c #C4D5E9",
+"B% c #FCFCFE",
+"C% c #F3F8FD",
+"D% c #E4F0FA",
+"E% c #EBF4FA",
+"F% c #FFFFFE",
+"G% c #7AA8D8",
+"H% c #4D85CA",
+"I% c #4E84C9",
+"J% c #4C84CA",
+"K% c #4B85CA",
+"L% c #4986CB",
+"M% c #4786CB",
+"N% c #4686CC",
+"O% c #4486CD",
+"P% c #4285CC",
+"Q% c #2E6BBF",
+"R% c #4178C3",
+"S% c #D8E4F2",
+"T% c #165CAF",
+"U% c #28477E",
+"V% c #0A257C",
+"W% c #DAE4F2",
+"X% c #5690D7",
+"Y% c #4B99DF",
+"Z% c #4B9ADF",
+"`% c #4C99DE",
+" & c #4B98DE",
+".& c #4C98DE",
+"+& c #4B98DD",
+"@& c #4A94D9",
+"#& c #D5E3F1",
+"$& c #A5CAEA",
+"%& c #5096D9",
+"&& c #4A90D6",
+"*& c #C0CBE3",
+"=& c #F1F7FD",
+"-& c #E7F1FA",
+";& c #E8F3FA",
+">& c #A6C4E3",
+",& c #4480C8",
+"'& c #4881C8",
+")& c #4A80C8",
+"!& c #4880C7",
+"~& c #4680C7",
+"{& c #4580C8",
+"]& c #4480C9",
+"^& c #4280C9",
+"/& c #3E7DC7",
+"(& c #2E66BC",
+"_& c #2760B9",
+":& c #467BC4",
+"<& c #D9E5F3",
+"[& c #28477F",
+"}& c #264FA6",
+"|& c #DBE6F4",
+"1& c #5994DA",
+"2& c #4797E0",
+"3& c #4897DF",
+"4& c #4797DF",
+"5& c #4896DF",
+"6& c #4796DE",
+"7& c #4795DD",
+"8& c #67A1DA",
+"9& c #4790D8",
+"0& c #478FD8",
+"a& c #468DD6",
+"b& c #C0CAE2",
+"c& c #FCFEFF",
+"d& c #F5F9FD",
+"e& c #F2F8FC",
+"f& c #4D86C9",
+"g& c #457FC8",
+"h& c #447DC8",
+"i& c #447CC6",
+"j& c #457BC6",
+"k& c #437AC5",
+"l& c #427BC5",
+"m& c #407CC5",
+"n& c #396FBE",
+"o& c #2F60B6",
+"p& c #2C5EB7",
+"q& c #285FB9",
+"r& c #4A7EC6",
+"s& c #DAE6F4",
+"t& c #2A4780",
+"u& c #0A277B",
+"v& c #DCE6F4",
+"w& c #5E99DC",
+"x& c #4496E0",
+"y& c #4395DF",
+"z& c #4394DE",
+"A& c #4494DE",
+"B& c #4391DA",
+"C& c #CCDCEE",
+"D& c #7EB0DF",
+"E& c #438FDA",
+"F& c #428ED8",
+"G& c #428BD6",
+"H& c #FDFEFF",
+"I& c #F4F9FD",
+"J& c #EEF4FB",
+"K& c #E9F4FB",
+"L& c #C9DAED",
+"M& c #3B78C4",
+"N& c #407AC6",
+"O& c #4079C4",
+"P& c #4078C3",
+"Q& c #4176C2",
+"R& c #3E6EBE",
+"S& c #3861B6",
+"T& c #345DB4",
+"U& c #305EB4",
+"V& c #2E5EB6",
+"W& c #2A5EB8",
+"X& c #4E80C7",
+"Y& c #DCE7F4",
+"Z& c #165CB0",
+"`& c #2A4880",
+" * c #0B277C",
+".* c #2550A7",
+"+* c #DDE7F4",
+"@* c #649EDF",
+"#* c #4697E0",
+"$* c #4596E0",
+"%* c #4295E0",
+"&* c #4294E0",
+"** c #4193DF",
+"=* c #4092DE",
+"-* c #5A99D7",
+";* c #B1CDE9",
+">* c #408ED9",
+",* c #408CD8",
+"'* c #3F8CD8",
+")* c #3F8AD6",
+"!* c #C0C9E1",
+"~* c #ADC0DE",
+"{* c #F4F6FA",
+"]* c #EDF5FC",
+"^* c #90B4DB",
+"/* c #3C76C4",
+"(* c #3E74C2",
+"_* c #3D6CBD",
+":* c #3D61B7",
+"<* c #3C5CB2",
+"[* c #395CB3",
+"}* c #365CB4",
+"|* c #325DB4",
+"1* c #305EB5",
+"2* c #2C5EB6",
+"3* c #5283C8",
+"4* c #DCE8F5",
+"5* c #155CB0",
+"6* c #2B4980",
+"7* c #0C287C",
+"8* c #DEE8F5",
+"9* c #6BA4E2",
+"0* c #4997E0",
+"a* c #4897E1",
+"b* c #4696E0",
+"c* c #4494DF",
+"d* c #4294DF",
+"e* c #4092DF",
+"f* c #A7C4E4",
+"g* c #4D91D6",
+"h* c #3F8DDB",
+"i* c #3F8CDA",
+"j* c #3E8BD9",
+"k* c #3E8AD8",
+"l* c #3C88D6",
+"m* c #C0C8E0",
+"n* c #FCFDFF",
+"o* c #F7FBFE",
+"p* c #94B2DA",
+"q* c #7A9FD2",
+"r* c #F2F8FD",
+"s* c #5B8AC9",
+"t* c #3C63B9",
+"u* c #3C61B7",
+"v* c #3C5EB5",
+"w* c #3C5DB4",
+"x* c #3B5CB2",
+"y* c #385CB4",
+"z* c #315DB4",
+"A* c #2F5EB6",
+"B* c #5686C9",
+"C* c #DDE9F5",
+"D* c #2C4A80",
+"E* c #0C297C",
+"F* c #2550A8",
+"G* c #E0E9F6",
+"H* c #72A9E4",
+"I* c #4E98E2",
+"J* c #4C98E1",
+"K* c #4B98E1",
+"L* c #4894DE",
+"M* c #4086D2",
+"N* c #5C95D4",
+"O* c #82ACDC",
+"P* c #AAC4E3",
+"Q* c #F2F6F9",
+"R* c #B5CDE8",
+"S* c #3D8DDD",
+"T* c #3D8CDC",
+"U* c #3D8BDB",
+"V* c #3D8ADA",
+"W* c #3C89D8",
+"X* c #3B87D7",
+"Y* c #FDFFFF",
+"Z* c #94B1D9",
+"`* c #3675C7",
+" = c #BDCDE6",
+".= c #F8FCFE",
+"+= c #E4EDF6",
+"@= c #3F6DBD",
+"#= c #3C62B8",
+"$= c #3C60B6",
+"%= c #3C5CB3",
+"&= c #3A5CB3",
+"*= c #375CB4",
+"== c #5B88CA",
+"-= c #DFEAF6",
+";= c #155DB0",
+">= c #2C4B81",
+",= c #0D2A7C",
+"'= c #2450A8",
+")= c #E0EAF6",
+"!= c #78AEE6",
+"~= c #529AE2",
+"{= c #519AE2",
+"]= c #6B98D1",
+"^= c #C7D3E6",
+"/= c #F5F7FA",
+"(= c #F9FCFE",
+"_= c #7BA9DC",
+":= c #3C8EDE",
+"<= c #3C8BDD",
+"[= c #3E89DC",
+"}= c #3E88DB",
+"|= c #3F86D9",
+"1= c #3F82D7",
+"2= c #C0C7E0",
+"3= c #95AFD8",
+"4= c #3E76CB",
+"5= c #4475C3",
+"6= c #EFF2F8",
+"7= c #ECF5FB",
+"8= c #EBF5FB",
+"9= c #B7CCE6",
+"0= c #3762B9",
+"a= c #3C5FB6",
+"b= c #365DB4",
+"c= c #5F8BCB",
+"d= c #E0EBF7",
+"e= c #145DB1",
+"f= c #2D4C80",
+"g= c #0E2A7D",
+"h= c #2451A8",
+"i= c #E0EBF6",
+"j= c #7CB1E7",
+"k= c #589DE3",
+"l= c #579CE2",
+"m= c #8FAED9",
+"n= c #F1F8FC",
+"o= c #EEF6FC",
+"p= c #F2F7FC",
+"q= c #5C94D6",
+"r= c #458DDF",
+"s= c #428BDF",
+"t= c #4189DD",
+"u= c #4087DC",
+"v= c #4086DB",
+"w= c #4084D8",
+"x= c #C0C6DF",
+"y= c #95AED8",
+"z= c #3F77CD",
+"A= c #3E75CB",
+"B= c #7194CC",
+"C= c #ECF5FC",
+"D= c #EFF7FC",
+"E= c #FEFFFE",
+"F= c #7DA0D2",
+"G= c #3C60B7",
+"H= c #3C5DB3",
+"I= c #608CCC",
+"J= c #E0ECF7",
+"K= c #2D4D80",
+"L= c #0F2C7C",
+"M= c #2351A9",
+"N= c #7EB2E7",
+"O= c #60A0E4",
+"P= c #5E9FE4",
+"Q= c #90ADD8",
+"R= c #508BD3",
+"S= c #4B90DF",
+"T= c #478EDF",
+"U= c #448CDF",
+"V= c #4189DE",
+"W= c #3F85DA",
+"X= c #C0C5DE",
+"Y= c #3F79CD",
+"Z= c #3F77CC",
+"`= c #3970C6",
+" - c #B3C5E1",
+".- c #F1F7FC",
+"+- c #F5FAFC",
+"@- c #F7F9FC",
+"#- c #4F7BC2",
+"$- c #395CB4",
+"%- c #608ACB",
+"&- c #DFEBF7",
+"*- c #145EB2",
+"=- c #2E4E81",
+"-- c #2351A8",
+";- c #80B3E8",
+">- c #68A4E4",
+",- c #66A3E4",
+"'- c #92ADD8",
+")- c #548DD4",
+"!- c #5094E1",
+"~- c #4D91E0",
+"{- c #488EDF",
+"]- c #448CDE",
+"^- c #418ADE",
+"/- c #4087DB",
+"(- c #C0C4DE",
+"_- c #96ADD8",
+":- c #407ACF",
+"<- c #3F78CD",
+"[- c #3E77CC",
+"}- c #4073C2",
+"|- c #E9EEF6",
+"1- c #F0F6FC",
+"2- c #D7E4F1",
+"3- c #3A66B9",
+"4- c #5F89CC",
+"5- c #DFEAF7",
+"6- c #135EB1",
+"7- c #2E4E80",
+"8- c #102D7C",
+"9- c #2251A8",
+"0- c #DEEAF6",
+"a- c #82B4E8",
+"b- c #72A8E6",
+"c- c #70A7E6",
+"d- c #7297D0",
+"e- c #BAC6DF",
+"f- c #F0F2F8",
+"g- c #6999D6",
+"h- c #5596E2",
+"i- c #5194E2",
+"j- c #4E92E0",
+"k- c #498FDF",
+"l- c #458CDE",
+"m- c #4188DD",
+"n- c #C0C4DD",
+"o- c #95ADD7",
+"p- c #3F7BD0",
+"q- c #3F7ACE",
+"r- c #4078CD",
+"s- c #3E76CC",
+"t- c #678CC9",
+"u- c #F7FAFE",
+"v- c #EEF5FC",
+"w- c #A4BDDF",
+"x- c #3861B7",
+"y- c #385CB3",
+"z- c #5E87CB",
+"A- c #DEEAF7",
+"B- c #135EB2",
+"C- c #2E4E7F",
+"D- c #112D7D",
+"E- c #2252A8",
+"F- c #DEE9F6",
+"G- c #84B5E8",
+"H- c #7AACE8",
+"I- c #78ACE7",
+"J- c #76AAE6",
+"K- c #72A7E5",
+"L- c #5E90D4",
+"M- c #7099D3",
+"N- c #93AED9",
+"O- c #B8C6E0",
+"P- c #8EAFDB",
+"Q- c #5A99E2",
+"R- c #5697E2",
+"S- c #5295E2",
+"T- c #4A8FDF",
+"U- c #C0C3DC",
+"V- c #95ACD6",
+"W- c #3F7DD2",
+"X- c #3F7CD0",
+"Y- c #3F79CE",
+"Z- c #3A72C8",
+"`- c #A9BCDD",
+" ; c #F4F8FD",
+".; c #6B91CA",
+"+; c #3C5FB5",
+"@; c #5D86CA",
+"#; c #DDE9F7",
+"$; c #304E80",
+"%; c #112E7D",
+"&; c #2252A9",
+"*; c #DDE8F6",
+"=; c #86B6E9",
+"-; c #7FB1E9",
+";; c #7EB0E9",
+">; c #7CAEE8",
+",; c #7AADE7",
+"'; c #78ABE7",
+"); c #75AAE6",
+"!; c #72A8E7",
+"~; c #679DDF",
+"{; c #D2DAEA",
+"]; c #C6D3E8",
+"^; c #5B98E0",
+"/; c #5B9AE3",
+"(; c #5798E2",
+"_; c #498EDE",
+":; c #C0C2DC",
+"<; c #3F7ED3",
+"[; c #3F7CD2",
+"}; c #3D70C2",
+"|; c #E2E8F2",
+"1; c #EFF3F9",
+"2; c #4570BC",
+"3; c #5C84C9",
+"4; c #DCE9F7",
+"5; c #125EB2",
+"6; c #31507F",
+"7; c #122E7D",
+"8; c #2252AA",
+"9; c #DCE8F6",
+"0; c #87B7E9",
+"a; c #86B4E9",
+"b; c #84B3E9",
+"c; c #82B2E9",
+"d; c #7DAFE9",
+"e; c #7AADE8",
+"f; c #74AAE6",
+"g; c #97B1DA",
+"h; c #6B98D3",
+"i; c #609DE4",
+"j; c #5C9BE3",
+"k; c #4E90DF",
+"l; c #C0C2DB",
+"m; c #95ABD6",
+"n; c #3F80D4",
+"o; c #3F7ED2",
+"p; c #3F7BD1",
+"q; c #4580D0",
+"r; c #649AD8",
+"s; c #5F86C6",
+"t; c #E6ECF5",
+"u; c #9FB8DD",
+"v; c #4F79C1",
+"w; c #5B83C9",
+"x; c #125FB2",
+"y; c #315080",
+"z; c #132F7E",
+"A; c #89B8EA",
+"B; c #8CB9EB",
+"C; c #8AB8EA",
+"D; c #88B6EA",
+"E; c #86B4EA",
+"F; c #83B2E9",
+"G; c #80B1E9",
+"H; c #7CAFE9",
+"I; c #79ACE7",
+"J; c #6795D4",
+"K; c #F0F3F8",
+"L; c #CDD8EA",
+"M; c #5C95DA",
+"N; c #619DE4",
+"O; c #5193E0",
+"P; c #BEC0D9",
+"Q; c #E0E2EE",
+"R; c #BBC0DB",
+"S; c #9DAED6",
+"T; c #819CD1",
+"U; c #648ACB",
+"V; c #4277C7",
+"W; c #4081D5",
+"X; c #3F7FD4",
+"Y; c #407CD0",
+"Z; c #9BC1E6",
+"`; c #467FCD",
+" > c #9DB3D8",
+".> c #DBE2F0",
+"+> c #5880C4",
+"@> c #3463BA",
+"#> c #3D66BD",
+"$> c #3C63BB",
+"%> c #3C62B7",
+"&> c #3C5EB4",
+"*> c #5A82C8",
+"=> c #DBE8F7",
+"-> c #1260B2",
+";> c #325180",
+">> c #13307C",
+",> c #2153AA",
+"'> c #DBE8F6",
+")> c #92BCEC",
+"!> c #90BBEC",
+"~> c #8EBAEC",
+"{> c #8BB8EB",
+"]> c #85B4EA",
+"^> c #6B95D2",
+"/> c #EEF1F6",
+"(> c #A4BADD",
+"_> c #5F99DE",
+":> c #609EE4",
+"<> c #5B9AE2",
+"[> c #5697E1",
+"}> c #3F72C4",
+"|> c #417ED0",
+"1> c #428ADE",
+"2> c #4088DC",
+"3> c #4082D7",
+"4> c #72A4DB",
+"5> c #FAFCFD",
+"6> c #AECEEB",
+"7> c #3E71C3",
+"8> c #4F7AC2",
+"9> c #3668BE",
+"0> c #3E6DC2",
+"a> c #3D6BC1",
+"b> c #3D6ABF",
+"c> c #3D67BD",
+"d> c #3C64BC",
+"e> c #5881C8",
+"f> c #DAE8F7",
+"g> c #1160B2",
+"h> c #335280",
+"i> c #DAE7F6",
+"j> c #8CBAEA",
+"k> c #98C0ED",
+"l> c #96BEEC",
+"m> c #94BCEC",
+"n> c #92BBEC",
+"o> c #87B5EA",
+"p> c #78A7E1",
+"q> c #BAC6E0",
+"r> c #A3BADD",
+"s> c #5B94DA",
+"t> c #5496E1",
+"u> c #5093E1",
+"v> c #4A90DF",
+"w> c #4085DA",
+"x> c #4083D8",
+"y> c #76A6DC",
+"z> c #F5F9FC",
+"A> c #74A5DC",
+"B> c #427ACA",
+"C> c #3E70C5",
+"D> c #3E6EC4",
+"E> c #3D6CC2",
+"F> c #3D6AC0",
+"G> c #3D68BE",
+"H> c #3D65BC",
+"I> c #3C63BA",
+"J> c #3C5EB6",
+"K> c #5680CA",
+"L> c #335381",
+"M> c #14317D",
+"N> c #2154AA",
+"O> c #8EBAEB",
+"P> c #A0C4EF",
+"Q> c #9DC2EE",
+"R> c #9AC0ED",
+"S> c #93BCEC",
+"T> c #879ECE",
+"U> c #EAF3FA",
+"V> c #EFF7FB",
+"W> c #CCD8EA",
+"X> c #6A96D4",
+"Y> c #5A98E0",
+"Z> c #5898E2",
+"`> c #5295E1",
+" , c #438BDF",
+"., c #4B89D4",
+"+, c #AAC7E6",
+"@, c #C7DFF1",
+"#, c #4075C8",
+"$, c #3E6FC4",
+"%, c #3D6DC2",
+"&, c #3D69BE",
+"*, c #3C64BB",
+"=, c #547FCA",
+"-, c #D9E7F7",
+";, c #1160B4",
+">, c #345381",
+",, c #15327C",
+"', c #2054AA",
+"), c #D9E6F6",
+"!, c #90BCEB",
+"~, c #A4C8EF",
+"{, c #A2C6EF",
+"], c #9CC2EE",
+"^, c #99C0ED",
+"/, c #95BEEC",
+"(, c #7999D2",
+"_, c #EAECF3",
+":, c #C3D1E6",
+"<, c #8AADDB",
+"[, c #6497D5",
+"}, c #4E8AD2",
+"|, c #4886D2",
+"1, c #5590D5",
+"2, c #76A4DB",
+"3, c #AFC8E6",
+"4, c #F4F8FB",
+"5, c #82ADDE",
+"6, c #3E6EC3",
+"7, c #3D67BE",
+"8, c #527EC9",
+"9, c #D8E6F7",
+"0, c #1061B4",
+"a, c #355482",
+"b, c #16337D",
+"c, c #D8E6F6",
+"d, c #91BCEC",
+"e, c #AACBF0",
+"f, c #A8CAF0",
+"g, c #A5C8EF",
+"h, c #9EC3EF",
+"i, c #98BEEB",
+"j, c #ADB4D4",
+"k, c #DFEDF9",
+"l, c #EEF6FB",
+"m, c #E7EBF3",
+"n, c #F2F4F9",
+"o, c #D7E4F2",
+"p, c #E9F3F9",
+"q, c #487ECB",
+"r, c #3C65BC",
+"s, c #507DC9",
+"t, c #345581",
+"u, c #16347D",
+"v, c #1F54AA",
+"w, c #D7E6F6",
+"x, c #92BDEC",
+"y, c #B0CEF2",
+"z, c #AECDF1",
+"A, c #AACBF1",
+"B, c #A7C9F0",
+"C, c #A4C6EF",
+"D, c #8394C8",
+"E, c #F5F6F9",
+"F, c #FBFCFD",
+"G, c #A4B5D8",
+"H, c #6896D5",
+"I, c #6794D4",
+"J, c #98B2DA",
+"K, c #D7DEEC",
+"L, c #F4F8FC",
+"M, c #EEF2F8",
+"N, c #ADC6E5",
+"O, c #5F95D6",
+"P, c #4082D4",
+"Q, c #78A4DA",
+"R, c #EAF1F8",
+"S, c #C6DCF0",
+"T, c #4479C9",
+"U, c #3E6CC2",
+"V, c #3D66BC",
+"W, c #4E7DC9",
+"X, c #365581",
+"Y, c #18347D",
+"Z, c #D6E5F6",
+"`, c #94BEEC",
+" ' c #B6D2F2",
+".' c #B3D0F2",
+"+' c #ACCCF1",
+"@' c #A4C7EF",
+"#' c #A0C3EF",
+"$' c #F6F6F9",
+"%' c #CAD0E4",
+"&' c #7696CE",
+"*' c #7EAEE6",
+"=' c #7BAEE8",
+"-' c #76AAE7",
+";' c #71A8E7",
+">' c #5689CE",
+",' c #F8F9FC",
+"'' c #EDF4FB",
+")' c #72A0D8",
+"!' c #4081D6",
+"~' c #4A86D2",
+"{' c #B3CCE8",
+"]' c #C4DAEE",
+"^' c #447CCC",
+"/' c #3E71C6",
+"(' c #3E70C4",
+"_' c #3D6BC0",
+":' c #3D69BF",
+"<' c #4D7CC9",
+"[' c #D7E5F6",
+"}' c #365681",
+"|' c #19357E",
+"1' c #1E54AB",
+"2' c #D5E4F5",
+"3' c #96BFED",
+"4' c #BCD6F4",
+"5' c #B8D4F2",
+"6' c #B5D2F2",
+"7' c #B1CFF2",
+"8' c #9FC3EE",
+"9' c #8498CA",
+"0' c #90A1CE",
+"a' c #7FA7DE",
+"b' c #8AB7EA",
+"c' c #84B4E9",
+"d' c #74A9E6",
+"e' c #689FE0",
+"f' c #CBD4E7",
+"g' c #4684D2",
+"h' c #4089DD",
+"i' c #4084D9",
+"j' c #B0CAE6",
+"k' c #3E74CA",
+"l' c #3E72C6",
+"m' c #3C62B9",
+"n' c #4B7BCA",
+"o' c #D6E4F6",
+"p' c #1062B4",
+"q' c #375680",
+"r' c #1D56AA",
+"s' c #D4E4F6",
+"t' c #97C0ED",
+"u' c #C1D9F4",
+"v' c #BED8F4",
+"w' c #BAD5F3",
+"x' c #B2CFF2",
+"y' c #ADCCF1",
+"z' c #A3C6EF",
+"A' c #98BFED",
+"B' c #8EB9EB",
+"C' c #87B6EA",
+"D' c #81B2E9",
+"E' c #70A7E7",
+"F' c #A7BADC",
+"G' c #D4DEED",
+"H' c #4288DA",
+"I' c #4086DC",
+"J' c #4084DA",
+"K' c #4082D8",
+"L' c #4080D5",
+"M' c #3F78CC",
+"N' c #3E73C8",
+"O' c #497AC9",
+"P' c #D5E4F6",
+"Q' c #1062B3",
+"R' c #385881",
+"S' c #19367C",
+"T' c #1E56AA",
+"U' c #D4E4F5",
+"V' c #98C1EE",
+"W' c #C7DCF5",
+"X' c #C2DAF4",
+"Y' c #BFD8F4",
+"Z' c #BBD5F3",
+"`' c #A6C8EF",
+" ) c #A1C5EF",
+".) c #88A6D6",
+"+) c #A4BCDF",
+"@) c #4086DA",
+"#) c #3F7CD1",
+"$) c #3F7ACF",
+"%) c #3E74C8",
+"&) c #3E70C6",
+"*) c #4778C9",
+"=) c #1A367E",
+"-) c #D4E3F5",
+";) c #9AC1ED",
+">) c #CCE0F7",
+",) c #C8DDF5",
+"') c #C3DAF5",
+")) c #B4D1F2",
+"!) c #AFCEF1",
+"~) c #A9CAF0",
+"{) c #9FC3EF",
+"]) c #8DB9EB",
+"^) c #74AAE7",
+"/) c #6A93D0",
+"() c #78A0D6",
+"_) c #4082D6",
+":) c #407BCF",
+"<) c #3E74C9",
+"[) c #4577C8",
+"}) c #D4E3F6",
+"|) c #395980",
+"1) c #1A377E",
+"2) c #1E56AC",
+"3) c #D4E3F4",
+"4) c #D1E3F7",
+"5) c #CDE0F7",
+"6) c #BED6F4",
+"7) c #B7D4F2",
+"8) c #B2D0F2",
+"9) c #A1C4EE",
+"0) c #9BC1EE",
+"a) c #8FBAEC",
+"b) c #7CAFE8",
+"c) c #6295D8",
+"d) c #96ADD6",
+"e) c #99B1D9",
+"f) c #98B1DA",
+"g) c #96B1DA",
+"h) c #4F8AD4",
+"i) c #4088DD",
+"j) c #3E80D4",
+"k) c #4078CE",
+"l) c #3E6EC2",
+"m) c #4377CA",
+"n) c #0F63B4",
+"o) c #3A5981",
+"p) c #274284",
+"q) c #B6CBE8",
+"r) c #D0E2F6",
+"s) c #CCDFF7",
+"t) c #C6DCF5",
+"u) c #C0D9F4",
+"v) c #B4D2F2",
+"w) c #AFCEF2",
+"x) c #9EC2EE",
+"y) c #7EAFE9",
+"z) c #6BA4E5",
+"A) c #64A0E4",
+"B) c #5F9CE4",
+"C) c #5294E2",
+"D) c #4C90E0",
+"E) c #6A9DDE",
+"F) c #AFCDEB",
+"G) c #1263B1",
+"H) c #446388",
+"I) c #6276A5",
+"J) c #1D4996",
+"K) c #4079C5",
+"L) c #D8E5F5",
+"M) c #86B5EA",
+"N) c #82B2EA",
+"O) c #7FB0EA",
+"P) c #77ABE8",
+"Q) c #6EA6E6",
+"R) c #6CA4E6",
+"S) c #68A2E5",
+"T) c #66A0E4",
+"U) c #629EE4",
+"V) c #5D9BE4",
+"W) c #5797E2",
+"X) c #4E92E1",
+"Y) c #4B90E0",
+"Z) c #488EE0",
+"`) c #4089DE",
+" ! c #3F87DD",
+".! c #3F86DC",
+"+! c #3F85DB",
+"@! c #3F84DA",
+"#! c #3E83D9",
+"$! c #3E82D7",
+"%! c #3E81D6",
+"&! c #3E80D6",
+"*! c #3E7ED4",
+"=! c #3E7DD3",
+"-! c #3E7CD2",
+";! c #3E7BD1",
+">! c #3E7AD0",
+",! c #3E79D0",
+"'! c #407AD0",
+")! c #71A3E1",
+"!! c #D7E6F5",
+"~! c #2A7ECD",
+"{! c #24609C",
+"]! c #788EA8",
+"^! c #D1D7E4",
+"/! c #213D81",
+"(! c #3B76C6",
+"_! c #A6C1E4",
+":! c #CEDDF0",
+"<! c #CEDEF2",
+"[! c #CDDEF2",
+"}! c #CCDEF2",
+"|! c #CCDEF3",
+"1! c #CCDFF2",
+"2! c #CCDFF3",
+"3! c #CCE0F3",
+"4! c #CBDEF2",
+"5! c #9FC3E8",
+"6! c #267BCC",
+"7! c #1463B0",
+"8! c #3E5E84",
+"9! c #D7DEE5",
+"0! c #AFB8D0",
+"a! c #244081",
+"b! c #1E4994",
+"c! c #1D53A4",
+"d! c #1C55A7",
+"e! c #1D55A8",
+"f! c #1D56A8",
+"g! c #1C56A8",
+"h! c #1C57A8",
+"i! c #1C58A8",
+"j! c #1B58A9",
+"k! c #1B59A8",
+"l! c #1A5AA9",
+"m! c #1A5AA8",
+"n! c #1B5AA8",
+"o! c #195BA9",
+"p! c #185CAA",
+"q! c #195CAB",
+"r! c #185EAA",
+"s! c #185EAC",
+"t! c #185DAB",
+"u! c #185FAC",
+"v! c #165FAB",
+"w! c #175FAC",
+"x! c #1760AC",
+"y! c #1660AC",
+"z! c #1661AC",
+"A! c #1662AC",
+"B! c #1662AD",
+"C! c #1862AA",
+"D! c #285F98",
+"E! c #3F5F84",
+"F! c #B9C4D2",
+"G! c #DBDFEA",
+"H! c #7789B0",
+"I! c #445C92",
+"J! c #38528C",
+"K! c #38538C",
+"L! c #39548D",
+"M! c #3A548D",
+"N! c #3A558C",
+"O! c #3B568D",
+"P! c #3C578C",
+"Q! c #3C578D",
+"R! c #3D588C",
+"S! c #3E598C",
+"T! c #3E5A8D",
+"U! c #3E5A8C",
+"V! c #405B8C",
+"W! c #405C8D",
+"X! c #415D8D",
+"Y! c #425E8E",
+"Z! c #425F8E",
+"`! c #43608E",
+" ~ c #44608E",
+".~ c #44608D",
+"+~ c #44608C",
+"@~ c #46618D",
+"#~ c #46628C",
+"$~ c #47638D",
+"%~ c #48648D",
+"&~ c #48648E",
+"*~ c #49658E",
+"=~ c #4A668E",
+"-~ c #4B678E",
+";~ c #4C688E",
+">~ c #4C698E",
+",~ c #4D6A8E",
+"'~ c #4D6A8D",
+")~ c #4E6A8E",
+"!~ c #5A7495",
+"~~ c #889BB2",
+"{~ c #DFE4EA",
+" . + @ # # $ % & * * = - ; ; > , , ' ) ! ! ~ { ] ^ ^ / ( _ : < [ [ } | | 1 2 3 4 5 6 7 8 9 0 ",
+" a b c d e f f g h i i j j k l m n o p q r r r s t u v w w v x y x y z A A B B A C D D E F G H I ",
+"J K L M N O P O O O O Q R R S R R R T T T U T U U U U U U U U U U V W V V V W X X Y X Y Z ` ...+.@.",
+"#.$.%.&.*.=.-.;.;.>.,.'.).).).).!.~.{.].^./.(._.:.<.<.[.}.|.1.2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.j.",
+"k.l.m.n.o.p.q.q.q.q.q.q.q.q.r.s.t.u.v.w.x.w.w.y.z.z.z.A.B.B.C.D.E.E.E.F.G.G.H.H.I.J.J.J.K.L.M.N.O.P.",
+"Q.R.S.T.U.V.V.V.V.V.V.W.W.W.W.W.W.W.X.Y.Z.Z.`.`.`. +.+W.++++@+@+#+$+$+$+$+%+&+*+*+=+=+-+;+>+,+'+)+!+",
+"~+{+]+^+/+(+(+(+(+(+(+_+_+:+:+<+[+}+|+1+1+2+3+4+5+6+7+8+9+0+a+a+b+b+c+d+e+f+g+h+i+j+k+k+l+m+n+o+p+q+",
+"r+s+t+u+v+w+x+y+z+w+w+w+A+A+A+A+A+A+B+C+D+E+ F+G+H+I+D+J+D+K+K+L+M+N+ O+P+Q+R+S+T+U+V+W+X+Y+p+Z+",
+"`+ @.@+@@@#@#@$@$@$@$@$@$@$@$@%@&@*@*@&@=@E+-@;@>@,@'@)@!@!@~@~@{@]@^@H+/@(@_@:@F+H+<@[@}@|@1@2@3@4@",
+"`+ @5@6@7@8@9@9@9@8@8@8@8@0@a@b@c@d@d@e@f@g@h@i@j@k@l@m@n@n@o@p@p@q@r@s@t@u@v@w@G+x@y@z@A@B@C@D@E@F@",
+"G@ @H@I@J@K@K@K@K@K@L@K@L@M@N@N@O@O@O@P@Q@R@h@S@T@j@U@V@W@X@X@X@Y@Z@`@ #.#t@+#@###$#%#&#*#=#-#;#>#,#",
+"'#)#!#~#{#]#]#^#^#^#^#/#(#^#_#:#<#<#<#[#}#|#1#2#3#i@4#5#6#7#7#8#9#4#0#a#w@.#b#c#d#e#e#f#f#g#h#i#>#,#",
+"j#k#l#m#n#o#o#p#p#q#r#s#t#u#v#w#x#y#y#y#z#A#B#C#D#E#4#F#G#H#I#J#H+,@K#L#a#M#r@N#O#P#Q#Q#R#S#T#U#>#V#",
+"W#X#Y#Z#`# $ $.$.$.$+$@$#$O+$$%$&$*$=$-$;$>$'@,$'$2#)$!$~$~${$G+]$^$/$K#($H+_$:$<$[$[$}$|$1$2$3$>#4$",
+"5$X#6$7$8$9$0$a$b$b$c$d$ e$f$g$h$i$j$k$U@l$m$'$n$o$p$q$r$s$t$u$v$u$n$w$x$y$z$A$B$C$D$E$F$G$H$I$",
+"J$K$L$M$N$O$P$P$Q$R$S$ F+ H+T$U$V$W$X$4#Y$l$Z$n$`$ %.%G++%@%t$u$s$#%$%%%&%*%=%-%;%>%,%'%)%H$!%",
+"~%{%]%^%/%(%/%_%:%:%<%[%F+ }%|%4#1%Y$2%G+3%4%H+5%6%7%($8%9%0%a%b%c%d%e%f%g%h%i%j%k%l%m%",
+"n%{%o%p%q%r%r%q%s%s%t%u% v% w%x%|%n$y%1%z%r@A%B%C%E#D%j@E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%",
+"V%{%W%X%Y%Z%`% &.& &+&@&#&F+F+ r@$&%&&&*&G+:@y%=&r@ 4#'$3#-&;&O+>&,&'&)&!&~&{&]&^&/&(&_&:&<&T%[&",
+"V%}&|&1&2&3&4&5&5&6&6&7&8&O+v% '@<#9&0&a&b&c&-@d&C%O+ e&Z$'$3#:@H+f&g&h&i&j&k&l&m&n&o&p&q&r&s&T%t&",
+"u&}&v&w&x&x&x&y&z&A&A&A&B&C& H+D&E&F&F&G&b&H&B#h@I&H& r@J&Z$K&D#n$L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&`&",
+" *.*+*@*#*$*x&%*&***=*=*-*O+ ;*>*>*,*'*)*!*v%4#B#-@v%~*{*'@2%Z$K&]*H+^*/*(*_*:*<*[*}*|*1*2*3*4*5*6*",
+"7*.*8*9*0*a*2&b*c*d***e*f* 9%g*h*i*j*k*l*m*F+n*4#o*v%p*q*F%y%2%Z$K&r*G+s*t*u*v*w*x*y*T&z*A*B*C*5*D*",
+"E*F*G*H*I*J*K*L*M*N*O*P*Q* R*S*T*U*V*W*X*m* Y*n*4#v%Z*`* =O+Y$2%Z$K&.=+=@=#=$=v*%=&=*=T&U&==-=;=>=",
+",='=)=!=~={=]=^=/= G+(=F%_=:=<=[=}=|=1=2= H&n*v%3=4=5=6=(=l$7=Z$8=O+9=0=u*a=v*<*y*b=|*c=d=e=f=",
+"g=h=i=j=k=l=m=H+n=o=Z$,$p= q=r=s=t=u=v=w=x= H&F+y=z=A=B= :@l$C=Z$D=E=F=#=G=v*H=&=*=T&I=J=e=K=",
+"L=M=)=N=O=P=Q=O+i@3#K&Z$e& R=S=T=U=V=u=W=X= y=Y=Z=`= -v%.-l$7=Z$+-@-#-#=$=v*<*$-}*%-&-*-=-",
+"L=---=;->-,-'-v%8%,$3#K&.- )-!-~-{-]-^-/-(- _-:-<-[-}-|-)$1-l$C=Z$)$2-3-u*v*w*&=*=4-5-6-7-",
+"8-9-0-a-b-c-d-e-f-F%v%(=@# g-h-i-j-k-l-m-n- o-p-q-r-s-t-F%u-1-l$,$v-v%w-x-$=v*<*y-z-A-B-C-",
+"D-E-F-G-H-I-J-K-L-M-N-O-H+ P-Q-R-S-j-T-]-U- V-W-X-Y-Z=Z-`-v% ;1-l$C=e& .;u*+;H=&=@;#;B-$;",
+"%;&;*;=;-;;;>;,;';);!;~;{; ];^;/;(;S-j-_;:; V-<;[;p-<-s-};|;G+r*1-l$8%r@1;2;$=v*<*3;4;5;6;",
+"7;8;9;0;a;b;c;-;d;e;';f;g; H+h;i;j;(;S-k;l; m;n;o;p;q-q;r;s;H+4#4#H+ t;u;v;G=v*%=w;4;x;y;",
+"z;8;9;A;B;C;D;E;F;G;H;I;J;K; L;M;N;j;R-O;P;Q;R;S;T;U;V;W;X;[;Y;Z;>@`; >F%.>3=+>@>#>$>%>a=&>*>=>->;>",
+">>,>'>C;)>!>~>{>D;]>c;;;^>/>'@F+(>_>:><>[>}>|>l-1>2>v=w=3>n;<;4>5> 6>7>8>9>0>a>b>c>d>#=$=v*e>f>g>h>",
+">>,>i>j>k>l>m>n>~>C;o>p>q>G+i@D=H+r>s>i;Q-t>u>v>U=V=u=w>x>W;y>z> H+A>B>C>D>E>F>G>H>I>u*J>K>i>g>L>",
+"M>N>i>O>P>Q>R>l>S>!>B;T> U>6%D%V>F+W>X>Y>Z>`>j-{- ,2>v=.,+,H+ d&@,#,$,%,F>&,#>*,#=a==,-,;,>,",
+",,',),!,~,{,P>],^,/,(,_,y%($7%j@E#(= H+:,<,[,},|,1,2,3,4, 5,C>6,a>b>7,d>#=$=8,9,0,a,",
+"b,',c,d,e,f,g,{,h,i,j,H+k,t$,@l,O+m,n, F+F+E= H+o,E= p,q,D>E>F>G>r,I>u*s,c,0,t,",
+"u,v,w,x,y,z,A,B,C,P>D,E,y%s@U@F,G,H,I,J,K, :@L,d&-@v%M,N,O,P,Q,R, S,T,$,U,F>&,V,$>%>W,c,0,X,",
+"Y,v,Z,`, '.'y,+'f,@'#'D,$' %'&'*'='-';'>','I&''l,C% )'2>v=w=!'~'{'F+ ]'^'/'('%,_':'#>d>#=<'['0,}'",
+"|'1'2'3'4'5'6'7'z,f,@'8'9'0'a'b'c';;I;d'e'f'@#Z$2%I&O+g'h'v=i'3>n;o;)'j'^'k'l'C>D>E>b>7,d>m'n'o'p'q'",
+"|'r's't'u'v'w' 'x'y'f,z'h,A')>B'C'D'>;J-E'F'n$'$,$'@G'H'^-I'J'K'L'<;X-q-M'k'N'C>D>E>F>G>d>m'O'P'Q'R'",
+"S'T'U'V'W'X'Y'Z' '7'+'`' )],l>!>C;b;;;I-b-.)F+5%'$G++)T=1>u=@)x>!'X;#)$)<-A=%)&)D>U,F>G>V,I>*)s'p'R'",
+"=)T'-);)>),)')Y'w'))!)~)@'{)k>)>])E;G;e;^)/)F%r@r@ ()k- ,2>v=w=_)X;[;:)<-s-<)/'('U,F>&,V,I>[)})p'|)",
+"1)2)3)/,4)5),)X'6)7)8)+'`'9)0)`,a)D;c;b)-'c)d)e)f)g)h)v>U=i)v=w=3>j)W-p-k)s-<)/'('l)_':'#>*,m)s'n)o)",
+"p)T'q)b;r)4)s)t)u)Z'v)w)f,z'x)l>!>b'b;y)I-b-z)A)B)Z>C)D)r=V=I'w=3>j)o;p-Y-s-k'l'C>l)_'b>#>#>E)F)G)H)",
+"I)J)K)L)M)c;N)O)>;e;P)^);'Q)R)S)T)U)i;V)Q-W)t>O;X)Y)Z)l-1>`) !.!+!@!#!$!%!&!*!=!-!;!>!,!'!)!!!~!{!]!",
+"^!/!..(!_!:!<!<!<!<!<!<!<!<!<!<!<![![![![!}![!}!}!}!}!}!}!}!}!}!}!}!|!|!}!1!|!|!2!1!1!3!4!5!6!7!8!9!",
+" 0!a!b!c!d!e!f!g!h!h!h!i!j!j!k!k!l!m!n!l!l!l!o!p!p!q!p!r!s!t!r!u!v!v!w!x!y!y!y!z!A!B!B!A!C!D!E!F! ",
+" G!H!I!J!K!L!M!N!O!O!P!Q!R!S!T!U!U!V!W!W!X!Y!Z!`! ~.~+~@~#~$~$~%~&~*~=~=~-~-~;~>~,~'~)~!~~~{~ "};
diff --git a/vmchooser/img/linux.xpm b/vmchooser/img/linux.xpm
new file mode 100644
index 0000000..e4745e5
--- /dev/null
+++ b/vmchooser/img/linux.xpm
@@ -0,0 +1,676 @@
+/* XPM */
+static char * linux_xpm[] = {
+"50 38 635 2",
+" c #FFFFFF",
+". c #FEFEFE",
+"+ c #FDFDFD",
+"@ c #FCFCFC",
+"# c #FAFAFA",
+"$ c #E7E7E7",
+"% c #CECECE",
+"& c #E0E0E0",
+"* c #FBFBFB",
+"= c #D2D2D2",
+"- c #454545",
+"; c #030303",
+"> c #040404",
+", c #212121",
+"' c #8E8E8E",
+") c #F3F3F3",
+"! c #D3D3D3",
+"~ c #101010",
+"{ c #020202",
+"] c #1B1B1B",
+"^ c #3C3C3C",
+"/ c #F0F0F0",
+"( c #505050",
+"_ c #010101",
+": c #000000",
+"< c #2E2E2E",
+"[ c #434343",
+"} c #0B0B0B",
+"| c #666666",
+"1 c #EFEFEF",
+"2 c #080808",
+"3 c #050505",
+"4 c #DEDEDE",
+"5 c #CACACA",
+"6 c #060606",
+"7 c #0F0F0F",
+"8 c #090909",
+"9 c #111111",
+"0 c #9C9C9C",
+"a c #C2C2C2",
+"b c #0A0A0A",
+"c c #757575",
+"d c #404040",
+"e c #797979",
+"f c #ABABAB",
+"g c #343434",
+"h c #FEFEFD",
+"i c #FCFDFD",
+"j c #CBCBCA",
+"k c #444545",
+"l c #949395",
+"m c #BEBDBB",
+"n c #090703",
+"o c #555352",
+"p c #BAB8B8",
+"q c #7E7D7D",
+"r c #AAAAAA",
+"s c #030305",
+"t c #020103",
+"u c #686868",
+"v c #FEFEFF",
+"w c #FFFEF9",
+"x c #F9FEFD",
+"y c #D5DBD3",
+"z c #606060",
+"A c #201824",
+"B c #8B7E6A",
+"C c #43350E",
+"D c #75673F",
+"E c #655950",
+"F c #181211",
+"G c #BCBCB5",
+"H c #03030D",
+"I c #020109",
+"J c #5D5D5E",
+"K c #FDFEFF",
+"L c #FFFEFB",
+"M c #FEFFFA",
+"N c #FBFCFD",
+"O c #EEEBEB",
+"P c #382E22",
+"Q c #897649",
+"R c #A9891C",
+"S c #D5B51E",
+"T c #CAAA20",
+"U c #B29B2B",
+"V c #69601D",
+"W c #AAA88C",
+"X c #010302",
+"Y c #020501",
+"Z c #515151",
+"` c #FDFFFC",
+" . c #FEFDFF",
+".. c #FEFFF3",
+"+. c #FDFAFC",
+"@. c #FBEFF8",
+"#. c #321B07",
+"$. c #B3951E",
+"%. c #E4B306",
+"&. c #EEC410",
+"*. c #F8D62D",
+"=. c #F2D42A",
+"-. c #E6C829",
+";. c #B29738",
+">. c #100400",
+",. c #020400",
+"'. c #333333",
+"). c #FFFEFA",
+"!. c #FFFCFF",
+"~. c #FDFEFE",
+"{. c #FCFFF3",
+"]. c #FCFCFB",
+"^. c #FFF4FF",
+"/. c #3E240C",
+"(. c #B7971A",
+"_. c #EEBD11",
+":. c #F5CB1D",
+"<. c #F0D021",
+"[. c #DCB718",
+"}. c #CA9F14",
+"|. c #A87F2C",
+"1. c #140001",
+"2. c #19171B",
+"3. c #E1E1E1",
+"4. c #FFFBFF",
+"5. c #F9FFF9",
+"6. c #F7FDFD",
+"7. c #FBF8FE",
+"8. c #1B0B04",
+"9. c #A18943",
+"0. c #B99118",
+"a. c #D2A60C",
+"b. c #C59107",
+"c. c #BB8F19",
+"d. c #BDA653",
+"e. c #B5AC8E",
+"f. c #080708",
+"g. c #4C4C55",
+"h. c #282829",
+"i. c #808080",
+"j. c #FFFDF9",
+"k. c #FFFDFF",
+"l. c #FEFCFF",
+"m. c #F4FDFB",
+"n. c #BDC3C4",
+"o. c #151213",
+"p. c #CBBEB5",
+"q. c #AC9764",
+"r. c #A88A30",
+"s. c #B1883D",
+"t. c #C7A679",
+"u. c #DDD4B3",
+"v. c #EAF2DF",
+"w. c #4C524D",
+"x. c #101012",
+"y. c #131313",
+"z. c #E2E2E2",
+"A. c #FEFFFE",
+"B. c #E8EEE9",
+"C. c #383F3C",
+"D. c #696D70",
+"E. c #EEEAEF",
+"F. c #C6BCB7",
+"G. c #BCB8A2",
+"H. c #C6C4AD",
+"I. c #E4DEDD",
+"J. c #FCF7F8",
+"K. c #FEFAFA",
+"L. c #CFC8D1",
+"M. c #090705",
+"N. c #656565",
+"O. c #FEFFFD",
+"P. c #FBFFFB",
+"Q. c #FCFCFF",
+"R. c #FCF9F6",
+"S. c #676862",
+"T. c #181B18",
+"U. c #E4E7E3",
+"V. c #FEFEF8",
+"W. c #EDE4EA",
+"X. c #DEDADD",
+"Y. c #EBEFF4",
+"Z. c #F8FEFE",
+"`. c #FDFEF4",
+" + c #FCFAFC",
+".+ c #FEFAFF",
+"++ c #454643",
+"@+ c #020201",
+"#+ c #B6B6B6",
+"$+ c #FBFDFC",
+"%+ c #FDFDFE",
+"&+ c #FEFDFE",
+"*+ c #959392",
+"=+ c #060605",
+"-+ c #737472",
+";+ c #FAFAF9",
+">+ c #FCFCF9",
+",+ c #FDFBFC",
+"'+ c #FBFAFC",
+")+ c #FDFFFD",
+"!+ c #FCFDF8",
+"~+ c #F9F9F9",
+"{+ c #868785",
+"]+ c #CDCDCD",
+"^+ c #CCCCCC",
+"/+ c #8D8D8D",
+"(+ c #ECECEC",
+"_+ c #EEEEEE",
+":+ c #DCDCDC",
+"<+ c #B5B5B5",
+"[+ c #2D2D2D",
+"}+ c #EBEBEB",
+"|+ c #616161",
+"1+ c #1A1A1A",
+"2+ c #F6F6F6",
+"3+ c #F4F4F4",
+"4+ c #E5E5E5",
+"5+ c #D1D1D1",
+"6+ c #818181",
+"7+ c #0D0D0D",
+"8+ c #141414",
+"9+ c #8C8C8C",
+"0+ c #F7F7F7",
+"a+ c #1F1F1F",
+"b+ c #121212",
+"c+ c #858585",
+"d+ c #F5F5F5",
+"e+ c #DADADA",
+"f+ c #222222",
+"g+ c #2A2A2A",
+"h+ c #BFBFBF",
+"i+ c #1C1C1C",
+"j+ c #EDEDED",
+"k+ c #737373",
+"l+ c #191919",
+"m+ c #C6C6C6",
+"n+ c #5E5E5E",
+"o+ c #171717",
+"p+ c #A7A7A7",
+"q+ c #0E0E0E",
+"r+ c #7B7B7B",
+"s+ c #D0D0D0",
+"t+ c #070707",
+"u+ c #464646",
+"v+ c #515051",
+"w+ c #F7F7F8",
+"x+ c #FEFDFD",
+"y+ c #FFFFFE",
+"z+ c #D4D4D3",
+"A+ c #000100",
+"B+ c #252526",
+"C+ c #FFFEFF",
+"D+ c #FFFFFA",
+"E+ c #F9FEF8",
+"F+ c #F7FEF4",
+"G+ c #FAFDFD",
+"H+ c #F2F1F1",
+"I+ c #0B0407",
+"J+ c #191817",
+"K+ c #2E3335",
+"L+ c #F6FAFC",
+"M+ c #FCFDFE",
+"N+ c #FDFBFA",
+"O+ c #FFFCFA",
+"P+ c #FBFAF7",
+"Q+ c #F0F0F1",
+"R+ c #FEFEFC",
+"S+ c #F7FEFE",
+"T+ c #D8D9CB",
+"U+ c #010400",
+"V+ c #130D13",
+"W+ c #030203",
+"X+ c #000701",
+"Y+ c #24212A",
+"Z+ c #FDFBFF",
+"`+ c #FFFEFD",
+" @ c #FEFFFF",
+".@ c #FBFFFF",
+"+@ c #FAFFFE",
+"@@ c #FCFFFD",
+"#@ c #FFFFFD",
+"$@ c #FEFFF9",
+"%@ c #FFFFFB",
+"&@ c #FCFEFF",
+"*@ c #F6FBFC",
+"=@ c #F8FEFA",
+"-@ c #FCFBFF",
+";@ c #F4EDE9",
+">@ c #38220B",
+",@ c #45380C",
+"'@ c #383122",
+")@ c #F8F6F6",
+"!@ c #FCFBFE",
+"~@ c #FBFBFC",
+"{@ c #FDFAFD",
+"]@ c #F9F6F8",
+"^@ c #F3F3F4",
+"/@ c #FDFDFB",
+"(@ c #FDFAF5",
+"_@ c #C4B9AF",
+":@ c #0E0E0C",
+"<@ c #0C0A18",
+"[@ c #080D0F",
+"}@ c #131E11",
+"|@ c #443D3F",
+"1@ c #FDFBF8",
+"2@ c #FFFEFC",
+"3@ c #FFFDFE",
+"4@ c #FCFFFF",
+"5@ c #FDFFF6",
+"6@ c #FCFAFE",
+"7@ c #FEFAF5",
+"8@ c #FFF9F2",
+"9@ c #F6EAC5",
+"0@ c #D1A838",
+"a@ c #E2BC3A",
+"b@ c #7E5F15",
+"c@ c #947F77",
+"d@ c #F6F4F4",
+"e@ c #F6FDFD",
+"f@ c #F9F6FF",
+"g@ c #F2F2F5",
+"h@ c #FEFDEE",
+"i@ c #EBD47C",
+"j@ c #C7A65C",
+"k@ c #0A0202",
+"l@ c #010510",
+"m@ c #010606",
+"n@ c #212213",
+"o@ c #8F8056",
+"p@ c #FDFDF0",
+"q@ c #FFFEFE",
+"r@ c #FDFFFF",
+"s@ c #FEFFF5",
+"t@ c #FFFDF8",
+"u@ c #FAF4DE",
+"v@ c #E4D496",
+"w@ c #E8D284",
+"x@ c #D2B247",
+"y@ c #EBB513",
+"z@ c #F8BA26",
+"A@ c #EBB828",
+"B@ c #5F3E10",
+"C@ c #696260",
+"D@ c #E1EBE6",
+"E@ c #FBFAFB",
+"F@ c #F8F7F9",
+"G@ c #FDFDFF",
+"H@ c #FCF8E2",
+"I@ c #DEB62A",
+"J@ c #D19C1C",
+"K@ c #1A0303",
+"L@ c #04040A",
+"M@ c #070402",
+"N@ c #422D02",
+"O@ c #D5BA3E",
+"P@ c #F8F5D1",
+"Q@ c #FFFCF0",
+"R@ c #D5BD7F",
+"S@ c #D3B22C",
+"T@ c #DDB319",
+"U@ c #E6B714",
+"V@ c #F7BD11",
+"W@ c #FBB71C",
+"X@ c #F9BC16",
+"Y@ c #CEAA20",
+"Z@ c #1D0F02",
+"`@ c #393F35",
+" # c #D2D6D3",
+".# c #D9D3BD",
+"+# c #DDB025",
+"@# c #DA9B0E",
+"## c #6A4602",
+"$# c #392602",
+"%# c #583B03",
+"&# c #BE8F0F",
+"*# c #EDBC21",
+"=# c #F1E3AD",
+"-# c #FFFBF9",
+";# c #FDFFFE",
+"># c #FEFFFB",
+",# c #FFFEF5",
+"'# c #FFF9F4",
+")# c #D8B76A",
+"!# c #E7BB15",
+"~# c #F6BE0D",
+"{# c #F4BD16",
+"]# c #F9BD0F",
+"^# c #F9BC11",
+"/# c #E9C110",
+"(# c #826B1A",
+"_# c #0B0201",
+":# c #242024",
+"<# c #E7E2E6",
+"[# c #FCFCFA",
+"}# c #D1CCB6",
+"|# c #CBA41D",
+"1# c #E7A90B",
+"2# c #C99E02",
+"3# c #BE9609",
+"4# c #D39E11",
+"5# c #F8B80E",
+"6# c #FAB816",
+"7# c #E5C75B",
+"8# c #FDF3CD",
+"9# c #FFFDEE",
+"0# c #F8FCFB",
+"a# c #F9FFFF",
+"b# c #FFFFFC",
+"c# c #FBFFFC",
+"d# c #FFFEF7",
+"e# c #FFF9F7",
+"f# c #DCC179",
+"g# c #E4B310",
+"h# c #FABC10",
+"i# c #FBB91F",
+"j# c #F3BE15",
+"k# c #F7BF0C",
+"l# c #FABE12",
+"m# c #F3C014",
+"n# c #DBB91A",
+"o# c #402609",
+"p# c #120706",
+"q# c #BDBAC3",
+"r# c #B1AB9A",
+"s# c #BB9318",
+"t# c #F0B40E",
+"u# c #E9B60C",
+"v# c #E8B00A",
+"w# c #F0B112",
+"x# c #FBBA1C",
+"y# c #FEBD11",
+"z# c #EBBF1B",
+"A# c #EAC863",
+"B# c #FCF0BB",
+"C# c #FEFEF6",
+"D# c #F9FEFF",
+"E# c #FFFFF6",
+"F# c #FFFFF9",
+"G# c #F9FFFC",
+"H# c #FFFCF5",
+"I# c #D9C17B",
+"J# c #E3B312",
+"K# c #F8BD0F",
+"L# c #FBBD1B",
+"M# c #F6BE0E",
+"N# c #F7BC1A",
+"O# c #FAB91D",
+"P# c #FBBB17",
+"Q# c #F3C113",
+"R# c #B3931C",
+"S# c #ADA181",
+"T# c #F7F9FA",
+"U# c #B4B4B2",
+"V# c #241D12",
+"W# c #BC8E11",
+"X# c #F5B808",
+"Y# c #F3BD13",
+"Z# c #F9BB1D",
+"`# c #F5BC17",
+" $ c #F0C117",
+".$ c #F7BD13",
+"+$ c #F0BB23",
+"@$ c #DFBD63",
+"#$ c #FFFCE7",
+"$$ c #FBFDFF",
+"%$ c #FFFFF3",
+"&$ c #FAFEFF",
+"*$ c #FFFBEE",
+"=$ c #D4B150",
+"-$ c #EAB40E",
+";$ c #FBB913",
+">$ c #FCBA1C",
+",$ c #FCBB10",
+"'$ c #FBBE17",
+")$ c #F7B917",
+"!$ c #FBBC1B",
+"~$ c #F6BA15",
+"{$ c #E5BC18",
+"]$ c #B8A25A",
+"^$ c #F5F1EC",
+"/$ c #FEFCFE",
+"($ c #F8F9FA",
+"_$ c #E5E6E7",
+":$ c #747272",
+"<$ c #0F0B08",
+"[$ c #211500",
+"}$ c #BE8F0C",
+"|$ c #F1BA10",
+"1$ c #F2BE0B",
+"2$ c #F7BE14",
+"3$ c #F5BF11",
+"4$ c #F1C010",
+"5$ c #F7BB17",
+"6$ c #F3B91D",
+"7$ c #D6B339",
+"8$ c #E4CF88",
+"9$ c #FFFDEC",
+"0$ c #FFFFF8",
+"a$ c #FEF2DA",
+"b$ c #B89723",
+"c$ c #E9B60E",
+"d$ c #F4B60F",
+"e$ c #F9BB13",
+"f$ c #FCBB12",
+"g$ c #F5BD07",
+"h$ c #F6C011",
+"i$ c #F8BB1C",
+"j$ c #F8BA12",
+"k$ c #E8B610",
+"l$ c #9F7F16",
+"m$ c #4B392B",
+"n$ c #797275",
+"o$ c #838285",
+"p$ c #767777",
+"q$ c #4E5253",
+"r$ c #131316",
+"s$ c #040101",
+"t$ c #080100",
+"u$ c #2B1C03",
+"v$ c #BF8E08",
+"w$ c #F1B71D",
+"x$ c #F8BB16",
+"y$ c #FABE0D",
+"z$ c #E8B613",
+"A$ c #DCB02F",
+"B$ c #DCB654",
+"C$ c #ECE4AA",
+"D$ c #FFFDE0",
+"E$ c #FEFBF8",
+"F$ c #FCFFFE",
+"G$ c #FFFAE1",
+"H$ c #C9B363",
+"I$ c #BA9422",
+"J$ c #BC9312",
+"K$ c #C59E0C",
+"L$ c #D5A116",
+"M$ c #E0AF12",
+"N$ c #EAB713",
+"O$ c #F4B918",
+"P$ c #DCA905",
+"Q$ c #97750D",
+"R$ c #2B1804",
+"S$ c #090305",
+"T$ c #060507",
+"U$ c #040504",
+"V$ c #050708",
+"W$ c #040407",
+"X$ c #0A0809",
+"Y$ c #0A0502",
+"Z$ c #2F2208",
+"`$ c #B58006",
+" % c #E9A919",
+".% c #F7B319",
+"+% c #F4B30F",
+"@% c #DDA80E",
+"#% c #C4A02B",
+"$% c #E7D797",
+"%% c #FEFCE4",
+"&% c #FDFBE6",
+"*% c #FFFDF7",
+"=% c #FDFCFF",
+"-% c #FBFFFD",
+";% c #FEFEF9",
+">% c #FFFBED",
+",% c #FFF6E0",
+"'% c #EBDBB9",
+")% c #CAB882",
+"!% c #AF8D4B",
+"~% c #987517",
+"{% c #AC850F",
+"]% c #C08F0E",
+"^% c #C99409",
+"/% c #A67B00",
+"(% c #6F510C",
+"_% c #685553",
+":% c #A19DA1",
+"<% c #B7B6B7",
+"[% c #B8B9B6",
+"}% c #B6B8B7",
+"|% c #B7B7BB",
+"1% c #B2B0B1",
+"2% c #A6A39E",
+"3% c #70654F",
+"4% c #92630C",
+"5% c #C18A0F",
+"6% c #CF990A",
+"7% c #C28D0E",
+"8% c #B18637",
+"9% c #F5E8C7",
+"0% c #F3FDFA",
+"a% c #FDFAFE",
+"b% c #FCFDFF",
+"c% c #FEFBFF",
+"d% c #FEFCFA",
+"e% c #FDF5D3",
+"f% c #D2C195",
+"g% c #9F7C4A",
+"h% c #734C10",
+"i% c #715317",
+"j% c #BDAD8D",
+"k% c #FFFAFE",
+"l% c #FEFEFB",
+"m% c #FCFCFD",
+"n% c #FDFCFD",
+"o% c #F2EDDF",
+"p% c #927342",
+"q% c #79590E",
+"r% c #7E630C",
+"s% c #9D8545",
+"t% c #F6E8D8",
+"u% c #FFF8FF",
+"v% c #F6FEF8",
+"w% c #FFFFF7",
+"x% c #FCFFFB",
+"y% c #FBFFF9",
+"z% c #FAFFF6",
+"A% c #F9FFFD",
+"B% c #F8FFFB",
+"C% c #FCFEFA",
+"D% c #FFFAFB",
+"E% c #FFF7FB",
+"F% c #FFF2EE",
+"G% c #FFF7E8",
+"H% c #FFFEF3",
+"I% c #FDFEFD",
+"J% c #FFFEF8",
+"K% c #FFFCEF",
+"L% c #F7F0DD",
+"M% c #F6F4DF",
+"N% c #FBFFF1",
+"O% c #FCFEFD",
+"P% c #FFFCFE",
+"Q% c #FFFCFC",
+"R% c #FDFFFB",
+" . . . . . . . . . . + @ # + $ % & * * + * . . . . . . . . . . . ",
+" . . . . . . . . . @ @ # = - ; ; > , ' ) @ . . . . . . . . . . . ",
+" . . . . . . . . . * + ! ~ ; { ; { ] , ^ / . . . . . . . . . . . ",
+" . . . . . . . . . + @ ( _ _ { : _ < [ } | . . . . . . . . . . ",
+" . . . . . . . . . * 1 2 > _ 3 { { 2 3 _ 2 4 + . + . . . . . . ",
+" . . . . . . . . . + 5 { 6 7 { 3 ; 8 9 { _ 0 . @ + . . . . . . . ",
+" . . . . . . . . . + a b c d > 7 e f g { { e * . + . . . . . . ",
+" . . . . . . h h . i j k l m n o p q r s t u . @ + . . . . . . . ",
+" . . . . . v w w v x y z A B C D E F G H I J . * + . . . . . . ",
+" . . . . . K h L M N O P Q R S T U V W X Y Z + . . . . . . . . ",
+" . . . . h ` .h ..+.@.#.$.%.&.*.=.-.;.>.,.'.. @ + . . . . . . . ",
+" . . . . h ).!.~.{.].^./.(._.:.<.[.}.|.1.2.b 3.. @ . . . . . . . ",
+" . . . . h w 4.v 5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.. . . . . . . . . ",
+" . . . . h j.k.l.x m.n.o.p.q.r.s.t.u.v.w.x.~ y.z.@ . . . . . . ",
+" . . . . h M l.!.A.B.C.D.E.F.G.H.I.J.K.L.M.{ ; N.+ . . . . . . ",
+" . . . . O.P.Q.!.R.S.T.U.V.W.X.Y.Z.`. +.+++@+_ 2 #+. . . . . . ",
+" . . . . . $+%+&+*+=+-+;+>+,+'+%+)+!+%+~+{+{ { { ] ]++ . + . . ",
+" . . . . . @ * ^+7 3 /+(+* ) _+# * 1 :+= <+9 2 ; { [+}+* + . . ",
+" . . . . . @ + |+8 1+]+2+* # ~+. + # 3+4+5+6+7+8+; > 9++ + . . ",
+" . . . . . + 0+a+b+c+~++ + + . . . + @ @ d+e+f+1+7 ; g+~++ . . ",
+" . . . . . + h+8+i+j+ . + # + + . . . + + # k+, l+{ ; m++ . . ",
+" . . . . . @ n+o+e @ . . . 3+. + . . . . . . p+{ q+b _ r+. . . . ",
+" . . . . . = b+7+s+. . . . 1 + . . . . . + m+; b t+{ u+. . . . ",
+" . h h . . v+b+8+w+. x+y+* _+. . . . . . . i z+: 9 ; A+B+. . . C+ ",
+" y+D+C+y+)+E+F+G+H+I+J+K+L+M+N+O+P+Q+%+ + + . R+~.S+T+U+V+W+X+Y+Z+L `+k. @.@+@@@#@ ",
+" y+$@C+%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@v + . . + /@R+(@_@:@<@[@}@|@1@M 2@3@ 4@.@)+#@ ",
+" @@4@5@K 6@7@8@9@0@a@b@c@d@e@.@f@g@v + . + . /@h@i@j@k@l@m@n@o@p@~.h w %@q@C+C+`+ ",
+" r@4@s@t@u@v@w@x@y@z@A@B@C@D@=@E@F@G@. . . + R+H@I@J@K@L@M@N@O@P@&@&@M D+3@!.k.`+ ",
+" y+%@C+D+Q@R@S@T@U@V@W@X@Y@Z@`@ #).&+G@. . + . /@.#+#@###$#%#&#*#=#-#%+x ;#C+k.`+>#y+ ",
+" #@,#C+C+'#)#!#~#X@{#]#^#/#(#_#:#<#v v . . . * [#}#|#1#2#3#4#5#6#7#8#9#0#a# @b#M c# ",
+" y+d# @r@e#f#g#h#i#j#k#l#m#n#o#p#q#v v . . + * [#r#s#t#u#v#w#x#y#z#A#B#C#D#;#E#F#4@ ",
+" k..@G#H#I#J#K#L#M#N#O#P#Q#R#S#T#v v . . + ~+U#V#W#X#Y#Z#`# $h#.$+$@$#$$$)+%$D+k. ",
+" y+d#+@&$*$=$-$;$>$,$'$)$!$~${$]$^$/$v . ($_$:$<$[$}$|$1$2$3$4$5$6$7$8$9$l.O.E#b#k. ",
+" #@0$G+G@a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$k#z$A$B$C$D$E$l. @M b#C+ ",
+" !.K F$G$H$I$J$K$L$M$N$O$^#P$Q$R$S$T$U$V$W$X$Y$Z$`$ %.%+%@%#%$%%%&%*%!.=%;#$@%@C+ ",
+" k.y+-%;%>%,%'%)%!%~%{%]%^%/%(%_%:%<%[%}%|%1%2%3%4%5%6%7%8%9%`.0%h a%-@b%F$M %@C+ ",
+" y+`+y+4@&@c%4.4.d%9$e%f%g%h%i%j%k%k.v l%h m%n%).o%p%q%r%s%t%u%G@v%r@Q.&@4@` %@C+k. ",
+" #@w%C+ @x%@@y%z%A%B%C%D%E%F%G%H%I%v h M R+v v h J%K%L%M%N%O%&+P%Q%>#R%R%R%%@#@C+C+ "};
diff --git a/vmchooser/img/xp.xpm b/vmchooser/img/xp.xpm
new file mode 100644
index 0000000..58e7b37
--- /dev/null
+++ b/vmchooser/img/xp.xpm
@@ -0,0 +1,1308 @@
+/* XPM */
+static char * xp_xpm[] = {
+"50 45 1260 2",
+" c #FFFFFF",
+". c #FEFEFD",
+"+ c #FDF3E7",
+"@ c #FCE5C8",
+"# c #FBD6AF",
+"$ c #FBCBA3",
+"% c #FAC5A1",
+"& c #FAC9AC",
+"* c #FBDBCA",
+"= c #FDF7F0",
+"- c #FEFCF9",
+"; c #FCE1C9",
+"> c #FAC592",
+", c #FBB563",
+"' c #FCB652",
+") c #FBAD4D",
+"! c #F99E47",
+"~ c #F79143",
+"{ c #F6833F",
+"] c #F5763D",
+"^ c #F16F3D",
+"/ c #ED6F42",
+"( c #F09675",
+"_ c #F8D4C4",
+": c #FEFEFC",
+"< c #FEFFFE",
+"[ c #F8C7AD",
+"} c #F6965C",
+"| c #F7944A",
+"1 c #F9A14B",
+"2 c #FBAF4E",
+"3 c #FCB54F",
+"4 c #FAA94B",
+"5 c #F99A45",
+"6 c #F78D42",
+"7 c #F57F3F",
+"8 c #F4733C",
+"9 c #EF6C3C",
+"0 c #EB663C",
+"a c #E7603B",
+"b c #E35C3D",
+"c c #E88269",
+"d c #F8DED3",
+"e c #FEFBF9",
+"f c #F48452",
+"g c #F68947",
+"h c #F7964A",
+"i c #FAA54C",
+"j c #FBB24E",
+"k c #FDB24E",
+"l c #FAA44A",
+"m c #F89645",
+"n c #F68941",
+"o c #F47B3E",
+"p c #F3703C",
+"q c #EE6B3C",
+"r c #E9643C",
+"s c #E55F3B",
+"t c #E2583B",
+"u c #DE523C",
+"v c #DB5441",
+"w c #ECB1A4",
+"x c #FBDCD1",
+"y c #F58046",
+"z c #F68D47",
+"A c #F89B4B",
+"B c #FAAA4D",
+"C c #FCB64F",
+"D c #FBAE4D",
+"E c #FAA048",
+"F c #F79244",
+"G c #F68540",
+"H c #F4773D",
+"I c #F26E3C",
+"J c #EC693B",
+"K c #E8623C",
+"L c #E45D3B",
+"M c #E1573B",
+"N c #DC513C",
+"O c #D94B3C",
+"P c #E09992",
+"Q c #FEFFFF",
+"R c #FFFFFE",
+"S c #F7B79C",
+"T c #F58446",
+"U c #F79248",
+"V c #F99F4C",
+"W c #FAAC4D",
+"X c #FDB64F",
+"Y c #FAAA4B",
+"Z c #F99C47",
+"` c #F78F43",
+" . c #F5813F",
+".. c #F4743D",
+"+. c #F16D3C",
+"@. c #EB673B",
+"#. c #E7613C",
+"$. c #E35B3C",
+"%. c #E0553C",
+"&. c #DB4F3C",
+"*. c #D7493C",
+"=. c #D0B1AF",
+"-. c #F7F8F7",
+";. c #C2D095",
+">. c #B7C9A2",
+",. c #F9FBF6",
+"'. c #FEFEFE",
+"). c #F49267",
+"!. c #F68846",
+"~. c #F79449",
+"{. c #F9A24C",
+"]. c #FBB14E",
+"^. c #FCB44E",
+"/. c #FAA74A",
+"(. c #F99945",
+"_. c #F78B42",
+":. c #F57D3E",
+"<. c #F3713C",
+"[. c #EF6C3B",
+"}. c #EA653B",
+"|. c #E65F3C",
+"1. c #E2593C",
+"2. c #DE533B",
+"3. c #DA4E3C",
+"4. c #D35144",
+"5. c #D3D1D2",
+"6. c #F8F9F6",
+"7. c #8EA752",
+"8. c #6B894B",
+"9. c #8BA969",
+"0. c #D4E1C3",
+"a. c #FDFDFB",
+"b. c #FEFFFD",
+"c. c #EDF5E6",
+"d. c #C1E1AE",
+"e. c #A0B28A",
+"f. c #FDFDFC",
+"g. c #FCEFE9",
+"h. c #F47F48",
+"i. c #F68B47",
+"j. c #F8994B",
+"k. c #FAA74C",
+"l. c #FBB44F",
+"m. c #FCB04D",
+"n. c #FAA348",
+"o. c #F79444",
+"p. c #F68841",
+"q. c #F47A3D",
+"r. c #F26F3C",
+"s. c #ED6A3C",
+"t. c #E9633B",
+"u. c #E55D3C",
+"v. c #E2573C",
+"w. c #DD523B",
+"x. c #D84C3C",
+"y. c #D0736B",
+"z. c #DFE0E1",
+"A. c #DFE7CD",
+"B. c #7E9848",
+"C. c #6B8B4A",
+"D. c #6F954A",
+"E. c #79A250",
+"F. c #95BB6E",
+"G. c #C7DEAE",
+"H. c #E7F2DC",
+"I. c #FAFCF7",
+"J. c #F5F9EF",
+"K. c #E3EFD4",
+"L. c #CAE2B0",
+"M. c #A4D17E",
+"N. c #87C45C",
+"O. c #79BD54",
+"P. c #838D6D",
+"Q. c #F9C9B7",
+"R. c #F58247",
+"S. c #F78F48",
+"T. c #F89C4B",
+"U. c #FBAA4E",
+"V. c #FCB650",
+"W. c #FBAD4C",
+"X. c #F79043",
+"Y. c #F68340",
+"Z. c #F4753C",
+"`. c #F16E3C",
+" + c #EB683C",
+".+ c #E8623B",
+"++ c #E35C3C",
+"@+ c #E0563C",
+"#+ c #DC503B",
+"$+ c #D74A3B",
+"%+ c #CF9C97",
+"&+ c #EBECEC",
+"*+ c #C4D499",
+"=+ c #6E8A48",
+"-+ c #6D8D4A",
+";+ c #71984A",
+">+ c #76A24C",
+",+ c #7BAD4E",
+"'+ c #81BA50",
+")+ c #8CC559",
+"!+ c #96C963",
+"~+ c #A3CF73",
+"{+ c #ACD37D",
+"]+ c #ACD27A",
+"^+ c #A6CE6F",
+"/+ c #9FCC64",
+"(+ c #96C75D",
+"_+ c #8CC355",
+":+ c #84C254",
+"<+ c #7EC153",
+"[+ c #75AE52",
+"}+ c #A4A897",
+"|+ c #EAEAEC",
+"1+ c #F0F0F1",
+"2+ c #F5A482",
+"3+ c #F58546",
+"4+ c #F79349",
+"5+ c #F9A14C",
+"6+ c #FBAE4E",
+"7+ c #F99A46",
+"8+ c #F5803F",
+"9+ c #F5733C",
+"0+ c #EF6D3B",
+"a+ c #EA663C",
+"b+ c #E6603B",
+"c+ c #E25A3B",
+"d+ c #DF543C",
+"e+ c #D54A3D",
+"f+ c #D0C3C2",
+"g+ c #F6F7F6",
+"h+ c #A0B666",
+"i+ c #6A8748",
+"j+ c #6E904A",
+"k+ c #739B4B",
+"l+ c #78A54D",
+"m+ c #7DB04F",
+"n+ c #83BD4F",
+"o+ c #88C351",
+"p+ c #8BC452",
+"q+ c #8FC653",
+"r+ c #93C753",
+"s+ c #98C956",
+"t+ c #9CC957",
+"u+ c #96C857",
+"v+ c #90C556",
+"w+ c #89C353",
+"x+ c #83C154",
+"y+ c #7CC053",
+"z+ c #6F9551",
+"A+ c #B8BBB2",
+"B+ c #D3D4D6",
+"C+ c #F6F7F7",
+"D+ c #FDFBFA",
+"E+ c #F48450",
+"F+ c #F68A47",
+"G+ c #F8964A",
+"H+ c #FAA44C",
+"I+ c #FAA54A",
+"J+ c #F89745",
+"K+ c #F78941",
+"L+ c #F47B3D",
+"M+ c #F3713B",
+"N+ c #EE6B3B",
+"O+ c #DD523C",
+"P+ c #D94D3C",
+"Q+ c #D06056",
+"R+ c #D8D9DA",
+"S+ c #EEF2E5",
+"T+ c #849E4B",
+"U+ c #6B8949",
+"V+ c #6F934A",
+"W+ c #749D4C",
+"X+ c #79A84E",
+"Y+ c #7EB44E",
+"Z+ c #83C04F",
+"`+ c #89C351",
+" @ c #8CC552",
+".@ c #91C753",
+"+@ c #95C854",
+"@@ c #9AC956",
+"#@ c #9BC957",
+"$@ c #95C857",
+"%@ c #8EC556",
+"&@ c #87C354",
+"*@ c #81C154",
+"=@ c #7ABF53",
+"-@ c #728658",
+";@ c #CFD0D0",
+">@ c #D7D9DA",
+",@ c #FEFEFF",
+"'@ c #FADDD2",
+")@ c #F48046",
+"!@ c #F68D48",
+"~@ c #F99A4B",
+"{@ c #FAA94D",
+"]@ c #FCAF4D",
+"^@ c #F89344",
+"/@ c #F68640",
+"(@ c #EC693C",
+"_@ c #E1563B",
+":@ c #D84C3B",
+"<@ c #CF8781",
+"[@ c #E3E5E5",
+"}@ c #D2DDB4",
+"|@ c #769148",
+"1@ c #6C8C4A",
+"2@ c #71964A",
+"3@ c #75A14C",
+"4@ c #7AAC4E",
+"5@ c #7FB74E",
+"6@ c #85C250",
+"7@ c #8AC451",
+"8@ c #8DC652",
+"9@ c #96C855",
+"0@ c #9AC957",
+"a@ c #99C956",
+"b@ c #93C757",
+"c@ c #8CC455",
+"d@ c #85C254",
+"e@ c #78B753",
+"f@ c #899078",
+"g@ c #E3E4E5",
+"h@ c #F8B79D",
+"i@ c #F48447",
+"j@ c #F79148",
+"k@ c #F99E4C",
+"l@ c #FAAB4B",
+"m@ c #F6823F",
+"n@ c #F4743C",
+"o@ c #F06D3C",
+"p@ c #E7603C",
+"q@ c #E0553B",
+"r@ c #CFAFAD",
+"s@ c #F0F0F0",
+"t@ c #B4C680",
+"u@ c #6D8F4A",
+"v@ c #72994B",
+"w@ c #77A34D",
+"x@ c #7BAE4E",
+"y@ c #81BB4E",
+"z@ c #87C250",
+"A@ c #8AC452",
+"B@ c #97C955",
+"C@ c #98C857",
+"D@ c #91C556",
+"E@ c #8AC454",
+"F@ c #7DC053",
+"G@ c #74A253",
+"H@ c #A7AB9E",
+"I@ c #F49368",
+"J@ c #FAA24D",
+"K@ c #FBB04E",
+"L@ c #FBA74A",
+"M@ c #F89845",
+"N@ c #E3593C",
+"O@ c #D25245",
+"P@ c #D3CFD1",
+"Q@ c #F6F8F3",
+"R@ c #8FA853",
+"S@ c #698749",
+"T@ c #6E9249",
+"U@ c #739C4B",
+"V@ c #79A64E",
+"W@ c #7DB24E",
+"X@ c #83BF4F",
+"Y@ c #8BC552",
+"Z@ c #90C653",
+"`@ c #96C858",
+" # c #90C456",
+".# c #88C354",
+"+# c #82C153",
+"@# c #7BBF53",
+"## c #6F8C54",
+"$# c #C6C7C3",
+"%# c #D4D5D7",
+"&# c #FBFBFB",
+"*# c #F68C47",
+"=# c #FAA64D",
+"-# c #FCB14D",
+";# c #F89544",
+"># c #F68840",
+",# c #ED6A3B",
+"'# c #E9633C",
+")# c #E55E3C",
+"!# c #DD513B",
+"~# c #DCDEDF",
+"{# c #E1E8CF",
+"]# c #7D9847",
+"^# c #6B8A49",
+"/# c #709449",
+"(# c #749E4B",
+"_# c #7AA94D",
+":# c #7FB54E",
+"<# c #85C14F",
+"[# c #91C754",
+"}# c #96C854",
+"|# c #94C757",
+"1# c #8EC455",
+"2# c #86C254",
+"3# c #80C154",
+"4# c #7ABD53",
+"5# c #7D8966",
+"6# c #D2D3D5",
+"7# c #DCDDDE",
+"8# c #F9CAB7",
+"9# c #F58246",
+"0# c #F68E48",
+"a# c #F99C4B",
+"b# c #FAAA4E",
+"c# c #FBAD4B",
+"d# c #FA9F48",
+"e# c #F89345",
+"f# c #F68541",
+"g# c #F4763C",
+"h# c #F26E3D",
+"i# c #EC683C",
+"j# c #E8613B",
+"k# c #E1563C",
+"l# c #D74B3B",
+"m# c #CF9B96",
+"n# c #E9EAEA",
+"o# c #C5D39A",
+"p# c #6F8B49",
+"q# c #6C8D4A",
+"r# c #71974A",
+"s# c #76A14C",
+"t# c #7BAC4E",
+"u# c #80B84E",
+"v# c #86C250",
+"w# c #8EC652",
+"x# c #92C753",
+"y# c #97C855",
+"z# c #99C957",
+"A# c #93C656",
+"B# c #8CC454",
+"C# c #7FC153",
+"D# c #76AE53",
+"E# c #989D8D",
+"F# c #E8E9E9",
+"G# c #F6A583",
+"H# c #F68546",
+"I# c #F9A14D",
+"J# c #F8A550",
+"K# c #F2A256",
+"L# c #ED9E64",
+"M# c #E99E72",
+"N# c #E79C75",
+"O# c #E8956C",
+"P# c #EA8859",
+"Q# c #ED7942",
+"R# c #ED713F",
+"S# c #E7623B",
+"T# c #E25A3C",
+"U# c #D44A3D",
+"V# c #D0C2C1",
+"W# c #F4F5F4",
+"X# c #A0B667",
+"Y# c #739A4A",
+"Z# c #7CB04E",
+"`# c #83BD50",
+" $ c #87C351",
+".$ c #8FC652",
+"+$ c #97C857",
+"@$ c #8AC354",
+"#$ c #82C154",
+"$$ c #719752",
+"%$ c #F4F5F5",
+"&$ c #FDFAF8",
+"*$ c #F48855",
+"=$ c #F28949",
+"-$ c #E99157",
+";$ c #DE9670",
+">$ c #D5A793",
+",$ c #D3BAB2",
+"'$ c #D2C3C0",
+")$ c #D2C7C6",
+"!$ c #D3C9C9",
+"~$ c #D2C8C7",
+"{$ c #D1C3BF",
+"]$ c #D4B8AE",
+"^$ c #D79B84",
+"/$ c #E2845A",
+"($ c #E56A40",
+"_$ c #DF563D",
+":$ c #D16056",
+"<$ c #D6D7D9",
+"[$ c #849E4A",
+"}$ c #84C050",
+"|$ c #95C754",
+"1$ c #81C155",
+"2$ c #73885A",
+"3$ c #D0D1D0",
+"4$ c #FDFEFE",
+"5$ c #FCF4EF",
+"6$ c #EBA17D",
+"7$ c #D8AF9F",
+"8$ c #D2D1D2",
+"9$ c #D4D6D7",
+"0$ c #D4D7DA",
+"a$ c #CED5DA",
+"b$ c #CDD6DE",
+"c$ c #D0D8E0",
+"d$ c #D7DDE2",
+"e$ c #E0E2E4",
+"f$ c #E0E1E3",
+"g$ c #DBDCDE",
+"h$ c #D5CCCB",
+"i$ c #D4AB9B",
+"j$ c #E0805A",
+"k$ c #DD5B3F",
+"l$ c #D08781",
+"m$ c #E1E3E4",
+"n$ c #D2DDB5",
+"o$ c #769248",
+"p$ c #6C8B4A",
+"q$ c #70964A",
+"r$ c #75A04C",
+"s$ c #7AAB4E",
+"t$ c #7FB74F",
+"u$ c #85C353",
+"v$ c #7FC053",
+"w$ c #8A927A",
+"x$ c #E0E2E3",
+"y$ c #FBF9F8",
+"z$ c #D5D9DB",
+"A$ c #C4D1DB",
+"B$ c #BBD0E1",
+"C$ c #B4D0E8",
+"D$ c #A3C7E7",
+"E$ c #97C1E5",
+"F$ c #8BBAE3",
+"G$ c #7FB3DF",
+"H$ c #79AFDD",
+"I$ c #7DB2DC",
+"J$ c #A2C5E3",
+"K$ c #D0DFEE",
+"L$ c #F0F3F4",
+"M$ c #ECEDED",
+"N$ c #DCD3D1",
+"O$ c #D7A28C",
+"P$ c #D2BDB7",
+"Q$ c #EEEFEF",
+"R$ c #B5C681",
+"S$ c #6A8648",
+"T$ c #6D8E4A",
+"U$ c #71994B",
+"V$ c #76A34C",
+"W$ c #81BB4F",
+"X$ c #98C856",
+"Y$ c #91C656",
+"Z$ c #74A452",
+"`$ c #A9ACA0",
+" % c #EDEEEE",
+".% c #DDEBF4",
+"+% c #AACBE6",
+"@% c #82B0DA",
+"#% c #86B5E0",
+"$% c #9AC4E8",
+"%% c #A5CCEC",
+"&% c #96C2E8",
+"*% c #88B9E4",
+"=% c #7AB1E0",
+"-% c #6CA8DB",
+";% c #5EA0D6",
+">% c #539AD3",
+",% c #4F90CC",
+"'% c #5689C6",
+")% c #799DCD",
+"!% c #C8D6E9",
+"~% c #F7F9FA",
+"{% c #DADCDE",
+"]% c #F4F6F1",
+"^% c #8FA855",
+"/% c #6A8749",
+"(% c #6E924A",
+"_% c #7DB14E",
+":% c #83BE4F",
+"<% c #88C251",
+"[% c #90C753",
+"}% c #8FC556",
+"|% c #88C355",
+"1% c #708E54",
+"2% c #C6C8C3",
+"3% c #D3D4D7",
+"4% c #F9F9F9",
+"5% c #EEF4F8",
+"6% c #4593CD",
+"7% c #5196D0",
+"8% c #6CA5D9",
+"9% c #86B6E1",
+"0% c #A1C9EB",
+"a% c #A0C9EC",
+"b% c #92C0E7",
+"c% c #84B7E2",
+"d% c #76AEDD",
+"e% c #68A5DA",
+"f% c #5A9ED5",
+"g% c #5197D1",
+"h% c #4E8CC9",
+"i% c #4C80C1",
+"j% c #4875B9",
+"k% c #4E71B5",
+"l% c #879DC9",
+"m% c #E7EBF3",
+"n% c #F7F9F4",
+"o% c #A0AE7E",
+"p% c #76904E",
+"q% c #71964B",
+"r% c #8AC351",
+"s% c #80C054",
+"t% c #7BBC53",
+"u% c #7F8C68",
+"v% c #D3D4D5",
+"w% c #D9DBDC",
+"x% c #B7D4EA",
+"y% c #388BCA",
+"z% c #589AD2",
+"A% c #74A9DB",
+"B% c #8EBCE5",
+"C% c #9DC6EB",
+"D% c #8EBDE5",
+"E% c #80B5E2",
+"F% c #72ACDD",
+"G% c #65A3D9",
+"H% c #569DD4",
+"I% c #5194D0",
+"J% c #4E87C6",
+"K% c #4A7CBE",
+"L% c #4771B6",
+"M% c #4667AF",
+"N% c #445EA8",
+"O% c #ACB5D3",
+"P% c #F8F8F5",
+"Q% c #BBC1A9",
+"R% c #8C9E63",
+"S% c #7FA04D",
+"T% c #7FAD4E",
+"U% c #81B84E",
+"V% c #86C251",
+"W% c #92C854",
+"X% c #9BCA57",
+"Y% c #8CC354",
+"Z% c #86BC52",
+"`% c #82AC52",
+" & c #889F61",
+".& c #ABAE9F",
+"+& c #E5E6E7",
+"@& c #7CB2DA",
+"#& c #438FCC",
+"$& c #619ED5",
+"%& c #7BAEDE",
+"&& c #96C2E7",
+"*& c #A6CDED",
+"=& c #98C4E9",
+"-& c #8BBBE4",
+";& c #7CB2E0",
+">& c #6EA9DC",
+",& c #61A1D7",
+"'& c #549BD3",
+")& c #5091CE",
+"!& c #4C84C4",
+"~& c #4A79BC",
+"{& c #466EB4",
+"]& c #4464AC",
+"^& c #4359A4",
+"/& c #C8CBD9",
+"(& c #FEFEFB",
+"_& c #F4E1B4",
+":& c #FAF4E5",
+"<& c #F7F8F8",
+"[& c #D8DAD5",
+"}& c #B2B89E",
+"|& c #98A86C",
+"1& c #92B057",
+"2& c #90BA4E",
+"3& c #90BF4F",
+"4& c #92C351",
+"5& c #96C452",
+"6& c #98C454",
+"7& c #99C155",
+"8& c #94BA54",
+"9& c #90AF57",
+"0& c #8EA662",
+"a& c #96A378",
+"b& c #AFB3A1",
+"c& c #C6C8C4",
+"d& c #D2D4D5",
+"e& c #D5D6D8",
+"f& c #F3F3F3",
+"g& c #FBFCFC",
+"h& c #4793CC",
+"i& c #4C93CE",
+"j& c #68A2D7",
+"k& c #82B3E1",
+"l& c #9DC7EA",
+"m& c #A2CAEC",
+"n& c #94C1E7",
+"o& c #86B8E3",
+"p& c #78AFDF",
+"q& c #6AA7DB",
+"r& c #5D9FD7",
+"s& c #5198D2",
+"t& c #4F8DCB",
+"u& c #4C81C2",
+"v& c #4876B9",
+"w& c #466BB1",
+"x& c #4560AA",
+"y& c #5263A5",
+"z& c #D2D5D7",
+"A& c #F7F2E3",
+"B& c #D69F41",
+"C& c #D2A25A",
+"D& c #F1DDB2",
+"E& c #FCFAF0",
+"F& c #F3F4F4",
+"G& c #DDDFDC",
+"H& c #C6C9BF",
+"I& c #B7BCA3",
+"J& c #ADB48D",
+"K& c #A4B07F",
+"L& c #A2AE7C",
+"M& c #A3AE80",
+"N& c #A9B18C",
+"O& c #B2B7A0",
+"P& c #BDC0B5",
+"Q& c #C7C9C7",
+"R& c #D1D3D3",
+"S& c #D6D4C9",
+"T& c #D8D6D1",
+"U& c #E4E5E6",
+"V& c #F4F4F5",
+"W& c #D8E7F2",
+"X& c #3389C8",
+"Y& c #5497D1",
+"Z& c #70A7DA",
+"`& c #8AB9E3",
+" * c #A2CBEC",
+".* c #9EC8EA",
+"+* c #90BEE6",
+"@* c #82B6E1",
+"#* c #74ADDD",
+"$* c #67A4D9",
+"%* c #589DD5",
+"&* c #5195D1",
+"** c #4D89C8",
+"=* c #4A7EBF",
+"-* c #4774B7",
+";* c #4568AF",
+">* c #435DA7",
+",* c #7884B3",
+"'* c #E0E1E2",
+")* c #F1DEB0",
+"!* c #CC9241",
+"~* c #C78D42",
+"{* c #D19B41",
+"]* c #E5BC64",
+"^* c #F7E2AC",
+"/* c #FCF6E0",
+"(* c #F7F6F0",
+"_* c #E3E4E4",
+":* c #DCDEDE",
+"<* c #DADBDC",
+"[* c #D9DADA",
+"}* c #D8D9D9",
+"|* c #D9D8D1",
+"1* c #DBD7C1",
+"2* c #E1D5A4",
+"3* c #ECD173",
+"4* c #F1C94D",
+"5* c #D6BF97",
+"6* c #9CC5E3",
+"7* c #3C8DCB",
+"8* c #5D9CD4",
+"9* c #77ABDD",
+"0* c #92BEE6",
+"a* c #A6CDEE",
+"b* c #9AC5E9",
+"c* c #8CBCE5",
+"d* c #7EB3E0",
+"e* c #71AADC",
+"f* c #63A2D8",
+"g* c #549BD4",
+"h* c #5093CF",
+"i* c #4D86C6",
+"j* c #4A7BBD",
+"k* c #4770B5",
+"l* c #4465AC",
+"m* c #435BA5",
+"n* c #A3A9C0",
+"o* c #EBECED",
+"p* c #E9C67A",
+"q* c #C38842",
+"r* c #CA9041",
+"s* c #D29A40",
+"t* c #DBA63B",
+"u* c #E5B138",
+"v* c #F3C445",
+"w* c #FCD760",
+"x* c #FEE281",
+"y* c #FEE89C",
+"z* c #FDEAA6",
+"A* c #FBE8A5",
+"B* c #F9E499",
+"C* c #F8E086",
+"D* c #FADB68",
+"E* c #FDD745",
+"F* c #FED32A",
+"G* c #FFCF2A",
+"H* c #E6B634",
+"I* c #DDCBAB",
+"J* c #FAFAFA",
+"K* c #62A4D3",
+"L* c #4791CD",
+"M* c #64A0D6",
+"N* c #7EB1DF",
+"O* c #99C4E8",
+"P* c #A5CCED",
+"Q* c #88BAE4",
+"R* c #7AB1DF",
+"S* c #6DA8DB",
+"T* c #5FA0D6",
+"U* c #529AD3",
+"V* c #4F8ECC",
+"W* c #4C82C3",
+"X* c #4978BB",
+"Y* c #466DB3",
+"Z* c #4463AB",
+"`* c #465AA3",
+" = c #C9CBD1",
+".= c #F6F4F0",
+"+= c #DAA84C",
+"@= c #C48942",
+"#= c #CC9341",
+"$= c #D49E3E",
+"%= c #DDA83A",
+"&= c #E7B436",
+"*= c #F3BF30",
+"== c #FECB2B",
+"-= c #FFD02F",
+";= c #FFD23A",
+">= c #FFD443",
+",= c #FFD74E",
+"'= c #FFDA57",
+")= c #FFDA54",
+"!= c #FFD641",
+"~= c #FFD42E",
+"{= c #FFD229",
+"]= c #FFCE29",
+"^= c #CFA23D",
+"/= c #DBD5C7",
+"(= c #D8DADB",
+"_= c #F7F7F7",
+":= c #F1F6F9",
+"<= c #388BC8",
+"[= c #4F95CF",
+"}= c #6BA4D8",
+"|= c #A0C9EB",
+"1= c #A1CAEB",
+"2= c #76AEDE",
+"3= c #69A5DA",
+"4= c #4D8BC9",
+"5= c #4975B9",
+"6= c #456AB0",
+"7= c #445FA8",
+"8= c #6574AB",
+"9= c #D8DADC",
+"0= c #F4E9CD",
+"a= c #D09840",
+"b= c #C68C41",
+"c= c #CE9640",
+"d= c #D7A13D",
+"e= c #E0AB39",
+"f= c #EBB735",
+"g= c #F6C42F",
+"h= c #FFCD2B",
+"i= c #FFD032",
+"j= c #FFD33D",
+"k= c #FFD546",
+"l= c #FFD851",
+"m= c #FFDB59",
+"n= c #FFD94E",
+"o= c #FFD53C",
+"p= c #FFD32A",
+"q= c #FFD129",
+"r= c #FECC2A",
+"s= c #C29C56",
+"t= c #D2D4D4",
+"u= c #D8D9DB",
+"v= c #BED8EB",
+"w= c #5799D1",
+"x= c #73A9DB",
+"y= c #8DBCE5",
+"z= c #9CC7EA",
+"A= c #80B5E1",
+"B= c #72ACDC",
+"C= c #66A3D9",
+"D= c #569CD4",
+"E= c #5094D0",
+"F= c #4D88C7",
+"G= c #4872B6",
+"H= c #4567AE",
+"I= c #445CA6",
+"J= c #8E97BA",
+"K= c #E4E6E6",
+"L= c #EED395",
+"M= c #C88F41",
+"N= c #D0993F",
+"O= c #D9A43C",
+"P= c #E3AF38",
+"Q= c #EEBA33",
+"R= c #FAC82D",
+"S= c #FFCF2C",
+"T= c #FFD135",
+"U= c #FFD43F",
+"V= c #FFD64A",
+"W= c #FFDA59",
+"X= c #FFD849",
+"Y= c #FFD436",
+"Z= c #FFD328",
+"`= c #FFD029",
+" - c #F1C130",
+".- c #C1A87F",
+"+- c #81B6DC",
+"@- c #428FCC",
+"#- c #609ED5",
+"$- c #7AAEDD",
+"%- c #95C1E7",
+"&- c #99C4E9",
+"*- c #6EAADC",
+"=- c #61A2D7",
+"-- c #539BD3",
+";- c #4F91CD",
+">- c #4C85C4",
+",- c #4B7ABC",
+"'- c #476FB4",
+")- c #4259A3",
+"!- c #B7BCC9",
+"~- c #F0F1F0",
+"{- c #E2B660",
+"]- c #CB9141",
+"^- c #D39C3F",
+"/- c #DCA73C",
+"(- c #E5B237",
+"_- c #F2BE32",
+":- c #FDCA2C",
+"<- c #FFCF2E",
+"[- c #FFD238",
+"}- c #FFD441",
+"|- c #FFD74C",
+"1- c #FFDA56",
+"2- c #FFD744",
+"3- c #FFD531",
+"4- c #FFD329",
+"5- c #DBAD38",
+"6- c #CABFA7",
+"7- c #FDFDFD",
+"8- c #4A96CD",
+"9- c #4B92CD",
+"0- c #A3CBED",
+"a- c #94C1E8",
+"b- c #87B8E3",
+"c- c #77B0DE",
+"d- c #5D9FD6",
+"e- c #5399D2",
+"f- c #4F8DCA",
+"g- c #4977BA",
+"h- c #466CB1",
+"i- c #4361AA",
+"j- c #5465A6",
+"k- c #D2D3D6",
+"l- c #F6F1E3",
+"m- c #D59E42",
+"n- c #C58A41",
+"o- c #CD9540",
+"p- c #D59F3D",
+"q- c #DEAA3B",
+"r- c #E8B535",
+"s- c #F4C230",
+"t- c #FFD030",
+"u- c #FFD33B",
+"v- c #FFD545",
+"w- c #FFD74F",
+"x- c #FFD951",
+"y- c #FFD63E",
+"z- c #FFD42C",
+"A- c #FFCD2A",
+"B- c #C79D45",
+"C- c #D2D0CA",
+"D- c #DEEAF4",
+"E- c #5497D0",
+"F- c #6FA6D9",
+"G- c #89B9E3",
+"H- c #9EC8EB",
+"I- c #91BFE6",
+"J- c #83B6E2",
+"K- c #599DD5",
+"L- c #4E89C8",
+"M- c #4B7FC0",
+"N- c #4974B8",
+"O- c #4669B0",
+"P- c #435EA8",
+"Q- c #7C87B3",
+"R- c #DDDEE0",
+"S- c #F0DEB2",
+"T- c #CB9241",
+"U- c #C78D41",
+"V- c #CF9740",
+"W- c #D7A23D",
+"X- c #E1AC3A",
+"Y- c #ECB834",
+"Z- c #F8C62E",
+"`- c #FFCE2B",
+" ; c #FFD134",
+".; c #FFD33E",
+"+; c #FFD648",
+"@; c #FFD852",
+"#; c #FFDA5A",
+"$; c #FFD84C",
+"%; c #FFD539",
+"&; c #FFD02A",
+"*; c #FAC92C",
+"=; c #BFA069",
+"-; c #DCDDDF",
+";; c #A1C9E4",
+">; c #3D8DCB",
+",; c #5C9BD3",
+"'; c #76ABDB",
+"); c #A5CDED",
+"!; c #7EB3E1",
+"~; c #71ABDC",
+"{; c #5093CE",
+"]; c #4D87C5",
+"^; c #4A7BBE",
+"/; c #4771B5",
+"(; c #4565AD",
+"_; c #425BA6",
+":; c #A5ABC1",
+"<; c #E9EAEC",
+"[; c #E8C77C",
+"}; c #C99041",
+"|; c #D19A40",
+"1; c #DBA53C",
+"2; c #E4B038",
+"3; c #F0BC32",
+"4; c #FCC92D",
+"5; c #FFCF2D",
+"6; c #FFD236",
+"7; c #FFD440",
+"8; c #FFD954",
+"9; c #FFDA58",
+"0; c #FFD746",
+"a; c #FFD434",
+"b; c #FFCF29",
+"c; c #E7B833",
+"d; c #C5B291",
+"e; c #E8E9EA",
+"f; c #68A7D5",
+"g; c #4691CC",
+"h; c #99C3E8",
+"i; c #A3C8E9",
+"j; c #97BEE3",
+"k; c #8FB7DF",
+"l; c #82AEDB",
+"m; c #73A6D7",
+"n; c #629ED5",
+"o; c #569AD3",
+"p; c #508FCC",
+"q; c #4B83C3",
+"r; c #476EB2",
+"s; c #475BA4",
+"t; c #C9CDD1",
+"u; c #F3F3F0",
+"v; c #D9A74B",
+"w; c #D49D3F",
+"x; c #E7B437",
+"y; c #F3BF31",
+"z; c #FECC2B",
+"A; c #FFD239",
+"B; c #FFD442",
+"C; c #FFCD29",
+"D; c #D1A43C",
+"E; c #CFC8B9",
+"F; c #F5F5F5",
+"G; c #F5F8FA",
+"H; c #3B8DC9",
+"I; c #5195CF",
+"J; c #6F9FD3",
+"K; c #7EA0D1",
+"L; c #8097C5",
+"M; c #8D9BC3",
+"N; c #99A3C4",
+"O; c #9DA5C3",
+"P; c #9DA6C2",
+"Q; c #98A2C2",
+"R; c #8A9AC0",
+"S; c #6D8ABE",
+"T; c #5F88C3",
+"U; c #5182C1",
+"V; c #4976B9",
+"W; c #435FA9",
+"X; c #6876AE",
+"Y; c #D7D8D9",
+"Z; c #C68B42",
+"`; c #D6A03D",
+" > c #EAB734",
+".> c #F6C32F",
+"+> c #FFD63B",
+"@> c #FFD128",
+"#> c #C19C53",
+"$> c #D2D3D4",
+"%> c #D0E1EE",
+"&> c #5288C4",
+"*> c #6F89BC",
+"=> c #939DBE",
+"-> c #B2B7C8",
+";> c #CDCFD3",
+">> c #D4D5D6",
+",> c #D3D5D6",
+"'> c #D1D2D5",
+")> c #B5BACB",
+"!> c #8A99C0",
+"~> c #5979B8",
+"{> c #486CB1",
+"]> c #909ABB",
+"^> c #E2E3E4",
+"/> c #EED497",
+"(> c #C68C42",
+"_> c #E2AE39",
+":> c #FAC82E",
+"<> c #FFCE2C",
+"[> c #FFD33F",
+"}> c #FFD649",
+"|> c #FFD749",
+"1> c #FFD536",
+"2> c #F3C22F",
+"3> c #C0A67B",
+"4> c #E1E2E3",
+"5> c #F5F7FA",
+"6> c #D4D7E5",
+"7> c #D3D5D7",
+"8> c #E7E8E8",
+"9> c #EFF0F0",
+"0> c #F1F1F1",
+"a> c #EDEEEF",
+"b> c #DEDFE0",
+"c> c #C2C7D2",
+"d> c #7D8FBD",
+"e> c #4C69AE",
+"f> c #BABFCB",
+"g> c #E1B863",
+"h> c #C28742",
+"i> c #CA9141",
+"j> c #D29C3E",
+"k> c #E5B238",
+"l> c #F1BD32",
+"m> c #FDCA2B",
+"n> c #FFCF2F",
+"o> c #FFD432",
+"p> c #FFCE2A",
+"q> c #DCAF38",
+"r> c #CABCA3",
+"s> c #F8F8F8",
+"t> c #F2F2F3",
+"u> c #EAEBEB",
+"v> c #BFC4D1",
+"w> c #F5F1E3",
+"x> c #D49F42",
+"y> c #C58A42",
+"z> c #CD9440",
+"A> c #D59F3E",
+"B> c #E8B536",
+"C> c #F4C130",
+"D> c #FFD031",
+"E> c #FFD544",
+"F> c #FFD42D",
+"G> c #C79E42",
+"H> c #D2D0C9",
+"I> c #ECECEC",
+"J> c #FBFBFC",
+"K> c #EBEBEC",
+"L> c #F7ECCD",
+"M> c #CE9F45",
+"N> c #CA9140",
+"O> c #D7A13C",
+"P> c #EBB834",
+"Q> c #F8C52E",
+"R> c #FFD133",
+"S> c #FFD952",
+"T> c #FFD538",
+"U> c #FFD429",
+"V> c #FFD12A",
+"W> c #BF9E66",
+"X> c #B1B1B1",
+"Y> c #A5A5A5",
+"Z> c #C1C0C0",
+"`> c #DAD9DA",
+" , c #EEE4D1",
+"., c #CDA862",
+"+, c #D3A340",
+"@, c #DCA83C",
+"#, c #E4B039",
+"$, c #EFBB33",
+"%, c #FBCA2C",
+"&, c #FFD237",
+"*, c #FFD64B",
+"=, c #FFD747",
+"-, c #FDD229",
+";, c #F2C430",
+">, c #DAAC3E",
+",, c #C8B592",
+"', c #E6E7E8",
+"), c #D4D4D4",
+"!, c #D5D5D5",
+"~, c #B8B7B8",
+"{, c #E0E0E0",
+"], c #E1E0DF",
+"^, c #CCBEA4",
+"/, c #CCAA61",
+"(, c #DBAD3E",
+"_, c #EFBE33",
+":, c #FCCC2C",
+"<, c #FECF30",
+"[, c #FED239",
+"}, c #FED343",
+"|, c #FED64D",
+"1, c #FED855",
+"2, c #FBD451",
+"3, c #F2C841",
+"4, c #E2B73D",
+"5, c #D0A749",
+"6, c #C9AC78",
+"7, c #CCC1AE",
+"8, c #D3D3D4",
+"9, c #F2F3F3",
+"0, c #F0F1F2",
+"a, c #CEC8BC",
+"b, c #C9B695",
+"c, c #CDB171",
+"d, c #D3AE56",
+"e, c #D6AE4A",
+"f, c #D7AE4A",
+"g, c #D4AC4E",
+"h, c #CFAA5A",
+"i, c #CAAB6F",
+"j, c #C9B38C",
+"k, c #CCC2AE",
+"l, c #D1D1CF",
+"m, c #F1F2F3",
+"n, c #D6D7D7",
+"o, c #D3D3D5",
+"p, c #D3D4D4",
+"q, c #D2D4D6",
+"r, c #D2D5D6",
+"s, c #D5D6D7",
+"t, c #ECEDEE",
+"u, c #FAFAFB",
+"v, c #F6F6F6",
+"w, c #E7E8E9",
+"x, c #EAEBEC",
+"y, c #EFEFF0",
+" . + @ # $ % & * = ",
+" - ; > , ' ) ! ~ { ] ^ / ( _ : ",
+" < [ } | 1 2 3 4 5 6 7 8 9 0 a b c d < ",
+" 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 X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,. < ",
+" '.).!.~.{.].^./.(._.:.<.[.}.|.1.2.3.4.5.6.7.8.9.0.a. R b.c.d.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.! X.Y.Z.`. +.+++@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+1+",
+" < 2+3+4+5+6+3 4 7+6 8+9+0+a+b+c+d+&.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+j k I+J+K+L+M+N+r s t O+P+Q+R+S+T+U+V+W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@",
+" '@)@!@~@{@C ]@E ^@/@H r.(@.+L _@N :@<@[@}@|@1@2@3@4@5@6@7@8@.@9@0@a@b@c@d@<+e@f@B+g@ ",
+" h@i@j@k@W X l@Z ` m@n@o@@.p@$.q@&.*.r@s@t@i+u@v@w@x@y@z@A@q+r+B@#@C@D@E@:+F@G@H@B+s@ ",
+" . I@!.~.J@K@^.L@M@_.:.<.[.}.|.N@2.3.O@P@Q@R@S@T@U@V@W@X@o+Y@Z@+@a@#@`@ #.#+#@###$#%#&# ",
+" g.h.*#j.=#l.-#n.;#>#q.r.,#'#)#v.!#:@y.~#{#]#^#/#(#_#:#<#`+ @[#}#0@#@|#1#2#3#4#5#6#7# ",
+" 8#9#0#a#b#V.c#d#e#f#g#h#i#j#++k##+l#m#n#o#p#q#r#s#t#u#v#A@w#x#y##@z#A#B#d@C#D#E#B+F# ",
+" '.G#H#U I#J#K#L#M#N#O#P#Q#R#S#T#d+&.U#V#W#X#S@j+Y#l+Z#`# $A@.$r+a@#@+$v+@$#$y+$$A+B+%$ ",
+" &$*$=$-$;$>$,$'$)$!$~${$]$^$/$($_$P+:$<$S+[$U+V+W+X+Y+}$`+ @[#|$a@t+$@%@&@1$=@2$3$<$4$ ",
+" 5$6$7$'$8$9$0$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$6@A@8@x#y#0@z#b@c@u$v$e@w$B+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$x@W$z@A@.$r+B@#@X$Y$@$:+F@Z$`$B+ % ",
+" 4$.%+%@%#%$%%%&%*%=%-%;%>%,%'%)%!%~%1+{%]%^%/%(%U@V@_%:%<%Y@[%|$a@#@u+}%|%x+@#1%2%3%4% ",
+" 5%6%7%8%9%0%a%b%c%d%e%f%g%h%i%j%k%l%m%&#n%o%p%q%(#_#:#<#r% @[#}#0@0@|#1#2#s%t%u%v%w% ",
+" x%y%z%A%B%%%C%D%E%F%G%H%I%J%K%L%M%N%O% R P%Q%R%S%T%U%V%7@w#W%B@X%z#A#Y%Z%`% &.&B++& ",
+" @&#&$&%&&&*&=&-&;&>&,&'&)&!&~&{&]&^&/&(&_&:&<&[&}&|&1&2&3&4&5&6&7&8&9&0&a&b&c&d&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&X&Y&Z&`& *.*+*@*#*$*%*&***=*-*;*>*,*'*)*!*~*{*]*^*/*(* %_*:*<*[*}*|*1*2*3*4*5* ",
+" 6*7*8*9*0*a*b*c*d*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*&# ",
+" R K*L*M*N*O*P*&%Q*R*S*T*U*V*W*X*Y*Z*`* =.=+=@=#=$=%=&=*===-=;=>=,='=)=!=~={=]=^=/=(=_= ",
+" :=<=[=}=9%|=1=b%c%2=3=f%g%4=i%5=6=7=8=9=0=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u= ",
+" v=y%w=x=y=P*z=D%A=B=C=D=E=F=K%G=H=I=J=K=L=b=M=N=O=P=Q=R=S=T=U=V=)=W=X=Y=Z=`= -.-B+g@ ",
+" +-@-#-$-%-%%&--&;&*-=---;->-,-'-]&)-!-~-{-q*]-^-/-(-_-:-<-[-}-|-1-1-2-3-4-G*5-6-B+s@ ",
+" 7-8-9-j&k&z=0-a-b-c-q&d-e-f-u&g-h-i-j-k-l-m-n-o-p-q-r-s-h=t-u-v-w-W=x-y-z-{=A-B-C-%#&# ",
+" D-X&E-F-G-m&H-I-J-#*$*K-&*L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-`- ;.;+;@;#;$;%;4-&;*;=;B+-; ",
+" ;;>;,;';+*);b*y=!;~;f*g*{;];^;/;(;_;:;<;[;q*};|;1;2;3;4;5;6;7;V=8;9;0;a;Z=b;c;d;B+e; ",
+" f;g;M*N*h;i;j;k;l;m;n;o;p;q;X*r;Z*s;t;u;v;@=#=w;%=x;y;z;-=A;B;,='=8;!=~={=C;D;E;B+F; ",
+"G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;6=W;X;Y;0=a=Z;c=`;e= >.>h=i=j=k=l=W=n=+>p=@>r=#>$><$'. ",
+"%>&>*>=>->;>B+B+B+>>%#,>'>)>!>~>{>>*]>^>/>(>M=N=O=_>Q=:><> ;[>}>8;W=|>1>Z=`=2>3>B+4> ",
+"5>6>d&7>e&w%'*8>M$9>0>1+a>8>b>c>d>e>f>Q$g>h>i>j>/-k>l>m>n>[-}-|-1-1-2-o>4-p>q>r>B+ % ",
+" s>F#t>J* J*u>v>B+w>x>y>z>A>q-B>C>h=D>u-E>w-W=x-y-F>{=A-G>H>6#I>F;J*&# ",
+" J>K>L>M>N>V-O>X-P>Q>`-R>j=+;S>#;$;T>U>V>*;W>B+<$X>Y>Z>`> ",
+" < ,.,+,@,#,$,%,5;&,}-*,8;9;=,a;-,;,>,,,B+',),!,~,{, ",
+" ],^,/,(,_,:,<,[,},|,1,2,3,4,5,6,7,8,v%9, ",
+" 0,<*a,b,c,d,e,f,g,h,i,j,k,l,B+B+9$'*7- ",
+" '.m,4>n,B+o,$>p,v%q,r,,>s,z.t,u, ",
+" '.v,Q$|+w,w,x,y,C+4$ "};
diff --git a/vmchooser/img/xp_locked.xpm b/vmchooser/img/xp_locked.xpm
new file mode 100644
index 0000000..23b29c4
--- /dev/null
+++ b/vmchooser/img/xp_locked.xpm
@@ -0,0 +1,1406 @@
+/* XPM */
+static char * xp_locked_xpm[] = {
+"50 45 1358 2",
+" c None",
+". c #FFFFFF",
+"+ c #FEFEFD",
+"@ c #FDF3E7",
+"# c #FCE5C8",
+"$ c #FBD6AF",
+"% c #FBCBA3",
+"& c #FAC5A1",
+"* c #FAC9AC",
+"= c #FBDBCA",
+"- c #FDF7F0",
+"; c #FEFCF9",
+"> c #FCE1C9",
+", c #FAC592",
+"' c #FBB563",
+") c #FCB652",
+"! c #FBAD4D",
+"~ c #F99E47",
+"{ c #F79143",
+"] c #F6833F",
+"^ c #F5763D",
+"/ c #F16F3D",
+"( c #ED6F42",
+"_ c #F09675",
+": c #F8D4C4",
+"< c #FEFEFC",
+"[ c #FEFFFE",
+"} c #F8C7AD",
+"| c #F6965C",
+"1 c #F7944A",
+"2 c #F9A14B",
+"3 c #FBAF4E",
+"4 c #FCB54F",
+"5 c #FAA94B",
+"6 c #F99A45",
+"7 c #F78D42",
+"8 c #F57F3F",
+"9 c #F4733C",
+"0 c #EF6C3C",
+"a c #EB663C",
+"b c #E7603B",
+"c c #E35C3D",
+"d c #E88269",
+"e c #F8DED3",
+"f c #F3F3F2",
+"g c #C1BFBA",
+"h c #96948A",
+"i c #7C7A70",
+"j c #77756B",
+"k c #89897F",
+"l c #B1B1AB",
+"m c #E8E7E6",
+"n c #FEFBF9",
+"o c #F48452",
+"p c #F68947",
+"q c #F7964A",
+"r c #FAA54C",
+"s c #FBB24E",
+"t c #FDB24E",
+"u c #FAA44A",
+"v c #F89645",
+"w c #F68941",
+"x c #F47B3E",
+"y c #F3703C",
+"z c #EE6B3C",
+"A c #E9643C",
+"B c #E55F3B",
+"C c #E2583B",
+"D c #DE523C",
+"E c #DB5441",
+"F c #ECB1A4",
+"G c #FDFDFC",
+"H c #D4D3CC",
+"I c #908F83",
+"J c #787268",
+"K c #7E7667",
+"L c #827B69",
+"M c #817A68",
+"N c #777060",
+"O c #676356",
+"P c #6B6A5D",
+"Q c #AEB0A5",
+"R c #F9F9F7",
+"S c #FBDCD1",
+"T c #F58046",
+"U c #F68D47",
+"V c #F89B4B",
+"W c #FAAA4D",
+"X c #FCB64F",
+"Y c #FBAE4D",
+"Z c #FAA048",
+"` c #F79244",
+" . c #F68540",
+".. c #F4773D",
+"+. c #F26E3C",
+"@. c #EC693B",
+"#. c #E8623C",
+"$. c #E45D3B",
+"%. c #E1573B",
+"&. c #DC513C",
+"*. c #D94B3C",
+"=. c #E09992",
+"-. c #FEFFFF",
+";. c #FFFFFE",
+">. c #D2D2C4",
+",. c #938F7D",
+"'. c #887E70",
+"). c #A09780",
+"!. c #C2BAAA",
+"~. c #D5CFC6",
+"{. c #D7D1C7",
+"]. c #CAC4B7",
+"^. c #ACA593",
+"/. c #888371",
+"(. c #686454",
+"_. c #9E9D92",
+":. c #F7F7F6",
+"<. c #F7B79C",
+"[. c #F58446",
+"}. c #F79248",
+"|. c #F99F4C",
+"1. c #FAAC4D",
+"2. c #FDB64F",
+"3. c #FAAA4B",
+"4. c #F99C47",
+"5. c #F78F43",
+"6. c #F5813F",
+"7. c #F4743D",
+"8. c #F16D3C",
+"9. c #EB673B",
+"0. c #E7613C",
+"a. c #E35B3C",
+"b. c #E0553C",
+"c. c #DB4F3C",
+"d. c #D7493C",
+"e. c #D0B1AF",
+"f. c #F7F8F7",
+"g. c #C2D095",
+"h. c #B7C9A2",
+"i. c #E5E6DB",
+"j. c #A09E92",
+"k. c #8F8774",
+"l. c #BBB6A5",
+"m. c #F4F2EE",
+"n. c #FAFAF7",
+"o. c #D4CEBF",
+"p. c #9D9682",
+"q. c #716D5A",
+"r. c #B4B4AB",
+"s. c #FDFDFD",
+"t. c #FEFEFE",
+"u. c #F49267",
+"v. c #F68846",
+"w. c #F79449",
+"x. c #F9A24C",
+"y. c #FBB14E",
+"z. c #FCB44E",
+"A. c #FAA74A",
+"B. c #F99945",
+"C. c #F78B42",
+"D. c #F57D3E",
+"E. c #F3713C",
+"F. c #EF6C3B",
+"G. c #EA653B",
+"H. c #E65F3C",
+"I. c #E2593C",
+"J. c #DE533B",
+"K. c #DA4E3C",
+"L. c #D35144",
+"M. c #D3D1D2",
+"N. c #F8F9F6",
+"O. c #8EA752",
+"P. c #8BA16F",
+"Q. c #CBC9BD",
+"R. c #858473",
+"S. c #BDB8A5",
+"T. c #FCFCFC",
+"U. c #DAD7CB",
+"V. c #968F7B",
+"W. c #908E7E",
+"X. c #D2D6CA",
+"Y. c #C1E1AE",
+"Z. c #A0B28A",
+"`. c #FCEFE9",
+" + c #F47F48",
+".+ c #F68B47",
+"++ c #F8994B",
+"@+ c #FAA74C",
+"#+ c #FBB44F",
+"$+ c #FCB04D",
+"%+ c #FAA348",
+"&+ c #F79444",
+"*+ c #F68841",
+"=+ c #F47A3D",
+"-+ c #F26F3C",
+";+ c #ED6A3C",
+">+ c #E9633B",
+",+ c #E55D3C",
+"'+ c #E2573C",
+")+ c #DD523B",
+"!+ c #D84C3C",
+"~+ c #D0736B",
+"{+ c #DFE0E1",
+"]+ c #DFE7CD",
+"^+ c #7E9848",
+"/+ c #C0C9A9",
+"(+ c #8F8D80",
+"_+ c #A59B88",
+":+ c #A2BF7F",
+"<+ c #C7DEAE",
+"[+ c #E7F2DC",
+"}+ c #FAFCF7",
+"|+ c #F5F9EF",
+"1+ c #E3EED4",
+"2+ c #C0BEAA",
+"3+ c #797462",
+"4+ c #AFB79F",
+"5+ c #7ABD55",
+"6+ c #838D6D",
+"7+ c #F9C9B7",
+"8+ c #F58247",
+"9+ c #F78F48",
+"0+ c #F89C4B",
+"a+ c #FBAA4E",
+"b+ c #FCB650",
+"c+ c #FBAD4C",
+"d+ c #F79043",
+"e+ c #F68340",
+"f+ c #F4753C",
+"g+ c #F16E3C",
+"h+ c #EB683C",
+"i+ c #E8623B",
+"j+ c #E35C3C",
+"k+ c #E0563C",
+"l+ c #DC503B",
+"m+ c #D74A3B",
+"n+ c #CF9C97",
+"o+ c #EBECEC",
+"p+ c #C4D499",
+"q+ c #799254",
+"r+ c #C5C2AE",
+"s+ c #837B6B",
+"t+ c #A2A783",
+"u+ c #7BAD4E",
+"v+ c #81BA50",
+"w+ c #8CC559",
+"x+ c #96C963",
+"y+ c #A3CF73",
+"z+ c #ACD37D",
+"A+ c #ACD27A",
+"B+ c #A6CE6F",
+"C+ c #9FCC64",
+"D+ c #96C75D",
+"E+ c #B2C98E",
+"F+ c #968E7F",
+"G+ c #979586",
+"H+ c #86B267",
+"I+ c #A4A897",
+"J+ c #EAEAEC",
+"K+ c #F0F0F1",
+"L+ c #F5A482",
+"M+ c #F58546",
+"N+ c #F79349",
+"O+ c #F9A14C",
+"P+ c #FBAE4E",
+"Q+ c #F99A46",
+"R+ c #F5803F",
+"S+ c #F5733C",
+"T+ c #EF6D3B",
+"U+ c #EA663C",
+"V+ c #E6603B",
+"W+ c #E25A3B",
+"X+ c #DF543C",
+"Y+ c #D54A3D",
+"Z+ c #D0C3C2",
+"`+ c #F6F7F6",
+" @ c #A0B666",
+".@ c #758E54",
+"+@ c #B1AA98",
+"@@ c #8C8272",
+"#@ c #9EAF7D",
+"$@ c #7DB04F",
+"%@ c #83BD4F",
+"&@ c #88C351",
+"*@ c #8BC452",
+"=@ c #8FC653",
+"-@ c #93C753",
+";@ c #98C956",
+">@ c #9CC957",
+",@ c #96C857",
+"'@ c #90C556",
+")@ c #A3C978",
+"!@ c #A69F91",
+"~@ c #878471",
+"{@ c #899F71",
+"]@ c #B8BBB2",
+"^@ c #D3D4D6",
+"/@ c #F6F7F7",
+"(@ c #FDFBFA",
+"_@ c #F48450",
+":@ c #F68A47",
+"<@ c #F8964A",
+"[@ c #FAA44C",
+"}@ c #FAA54A",
+"|@ c #F89745",
+"1@ c #F78941",
+"2@ c #F47B3D",
+"3@ c #F3713B",
+"4@ c #EE6B3B",
+"5@ c #DD523C",
+"6@ c #D94D3C",
+"7@ c #D06056",
+"8@ c #D8D9DA",
+"9@ c #EEF2E5",
+"0@ c #849E4B",
+"a@ c #748E53",
+"b@ c #A49F8C",
+"c@ c #928A77",
+"d@ c #9BB379",
+"e@ c #7EB44E",
+"f@ c #83C04F",
+"g@ c #89C351",
+"h@ c #8CC552",
+"i@ c #91C753",
+"j@ c #95C854",
+"k@ c #9AC956",
+"l@ c #9BC957",
+"m@ c #95C857",
+"n@ c #8EC556",
+"o@ c #96C669",
+"p@ c #A8A390",
+"q@ c #7F7D69",
+"r@ c #8B9675",
+"s@ c #CFD0D0",
+"t@ c #D7D9DA",
+"u@ c #FEFEFF",
+"v@ c #FADDD2",
+"w@ c #F48046",
+"x@ c #F68D48",
+"y@ c #F99A4B",
+"z@ c #FAA94D",
+"A@ c #FCAF4D",
+"B@ c #F89344",
+"C@ c #F68640",
+"D@ c #EC693C",
+"E@ c #E1563B",
+"F@ c #D84C3B",
+"G@ c #CF8781",
+"H@ c #E3E5E5",
+"I@ c #D2DDB4",
+"J@ c #769148",
+"K@ c #749154",
+"L@ c #A29E8A",
+"M@ c #938E78",
+"N@ c #8EAE6A",
+"O@ c #7FB74E",
+"P@ c #85C250",
+"Q@ c #8AC451",
+"R@ c #8DC652",
+"S@ c #96C855",
+"T@ c #9AC957",
+"U@ c #99C956",
+"V@ c #93C757",
+"W@ c #8CC455",
+"X@ c #91C564",
+"Y@ c #A7A390",
+"Z@ c #84806D",
+"`@ c #9CA089",
+" # c #E3E4E5",
+".# c #F8B79D",
+"+# c #F48447",
+"@# c #F79148",
+"## c #F99E4C",
+"$# c #FAAB4B",
+"%# c #F6823F",
+"&# c #F4743C",
+"*# c #F06D3C",
+"=# c #E7603C",
+"-# c #E0553B",
+";# c #CFAFAD",
+"># c #F0F0F0",
+",# c #B4C680",
+"'# c #6A8748",
+")# c #769454",
+"!# c #A6A18D",
+"~# c #94907A",
+"{# c #8DAF68",
+"]# c #81BB4E",
+"^# c #87C250",
+"/# c #8AC452",
+"(# c #97C955",
+"_# c #98C857",
+":# c #91C556",
+"<# c #8AC454",
+"[# c #92C666",
+"}# c #B0B2A2",
+"|# c #F49368",
+"1# c #FAA24D",
+"2# c #FBB04E",
+"3# c #FBA74A",
+"4# c #F89845",
+"5# c #E3593C",
+"6# c #D25245",
+"7# c #D3CFD1",
+"8# c #F6F8F3",
+"9# c #8FA853",
+"0# c #698749",
+"a# c #779754",
+"b# c #AAA391",
+"c# c #958F7A",
+"d# c #8FB269",
+"e# c #83BF4F",
+"f# c #8BC552",
+"g# c #90C653",
+"h# c #96C858",
+"i# c #90C456",
+"j# c #88C354",
+"k# c #91C566",
+"l# c #AAA593",
+"m# c #8C8774",
+"n# c #C5C5BA",
+"o# c #D4D5D7",
+"p# c #FBFBFB",
+"q# c #F68C47",
+"r# c #FAA64D",
+"s# c #FCB14D",
+"t# c #F89544",
+"u# c #F68840",
+"v# c #ED6A3B",
+"w# c #E9633C",
+"x# c #E55E3C",
+"y# c #DD513B",
+"z# c #DCDEDF",
+"A# c #E1E8CF",
+"B# c #7D9847",
+"C# c #6B8A49",
+"D# c #7B9B56",
+"E# c #ADA793",
+"F# c #968D7A",
+"G# c #90B469",
+"H# c #85C14F",
+"I# c #91C754",
+"J# c #96C854",
+"K# c #94C757",
+"L# c #8EC455",
+"M# c #86C254",
+"N# c #8DC465",
+"O# c #A9A393",
+"P# c #8C8876",
+"Q# c #CDCCC4",
+"R# c #DCDDDE",
+"S# c #F9CAB7",
+"T# c #F58246",
+"U# c #F68E48",
+"V# c #F99C4B",
+"W# c #FAAA4E",
+"X# c #FBAD4B",
+"Y# c #FA9F48",
+"Z# c #F89345",
+"`# c #F68541",
+" $ c #F4763C",
+".$ c #F26E3D",
+"+$ c #EC683C",
+"@$ c #E8613B",
+"#$ c #E1563C",
+"$$ c #D74B3B",
+"%$ c #CF9B96",
+"&$ c #E9EAEA",
+"*$ c #C5D39A",
+"=$ c #6F8B49",
+"-$ c #729151",
+";$ c #9FB67D",
+">$ c #B1AD95",
+",$ c #928A76",
+"'$ c #A4BD7F",
+")$ c #97C965",
+"!$ c #9ACA66",
+"~$ c #9ECC66",
+"{$ c #A1CD67",
+"]$ c #A7CE6C",
+"^$ c #AACF6D",
+"/$ c #A7CF6C",
+"($ c #A2CC6B",
+"_$ c #9CCB69",
+":$ c #97C969",
+"<$ c #A5CD81",
+"[$ c #A09B87",
+"}$ c #8B8875",
+"|$ c #D1D0C7",
+"1$ c #E8E9E9",
+"2$ c #F6A583",
+"3$ c #F68546",
+"4$ c #F9A14D",
+"5$ c #F8A550",
+"6$ c #F2A256",
+"7$ c #ED9E64",
+"8$ c #E99E72",
+"9$ c #E79C75",
+"0$ c #E8956C",
+"a$ c #EA8859",
+"b$ c #ED7942",
+"c$ c #ED713F",
+"d$ c #E7623B",
+"e$ c #E25A3C",
+"f$ c #D44A3D",
+"g$ c #D0C2C1",
+"h$ c #F4F5F4",
+"i$ c #A0B667",
+"j$ c #A4A87B",
+"k$ c #B8A479",
+"l$ c #A69369",
+"m$ c #907F59",
+"n$ c #A29064",
+"o$ c #AC996D",
+"p$ c #A9976C",
+"q$ c #AA986E",
+"r$ c #A9976D",
+"s$ c #AA976E",
+"t$ c #A9976E",
+"u$ c #AB996F",
+"v$ c #AD9B6F",
+"w$ c #AC9A6F",
+"x$ c #AB996D",
+"y$ c #A9976F",
+"z$ c #97835D",
+"A$ c #8A7953",
+"B$ c #A7966D",
+"C$ c #CEC4A8",
+"D$ c #FDFAF8",
+"E$ c #F48855",
+"F$ c #F28949",
+"G$ c #E99157",
+"H$ c #DE9670",
+"I$ c #D5A793",
+"J$ c #D3BAB2",
+"K$ c #D2C3C0",
+"L$ c #D2C7C6",
+"M$ c #D3C9C9",
+"N$ c #D2C8C7",
+"O$ c #D1C3BF",
+"P$ c #D4B8AE",
+"Q$ c #D79B84",
+"R$ c #E2845A",
+"S$ c #E56A40",
+"T$ c #DF563D",
+"U$ c #D16056",
+"V$ c #D6D7D9",
+"W$ c #849E4A",
+"X$ c #6B8949",
+"Y$ c #BCB587",
+"Z$ c #B79F65",
+"`$ c #AE945B",
+" % c #A88E57",
+".% c #A38A52",
+"+% c #9C864D",
+"@% c #968047",
+"#% c #917B45",
+"$% c #8F7943",
+"%% c #8D7641",
+"&% c #8A733F",
+"*% c #8C7540",
+"=% c #8D7640",
+"-% c #8F7842",
+";% c #907A43",
+">% c #927B45",
+",% c #947D47",
+"'% c #957F48",
+")% c #9A814E",
+"!% c #CBC08E",
+"~% c #FCF4EF",
+"{% c #EBA17D",
+"]% c #D8AF9F",
+"^% c #D2D1D2",
+"/% c #D4D6D7",
+"(% c #D4D7DA",
+"_% c #CED5DA",
+":% c #CDD6DE",
+"<% c #D0D8E0",
+"[% c #D7DDE2",
+"}% c #E0E2E4",
+"|% c #E0E1E3",
+"1% c #DBDCDE",
+"2% c #D5CCCB",
+"3% c #D4AB9B",
+"4% c #E0805A",
+"5% c #DD5B3F",
+"6% c #D08781",
+"7% c #E1E3E4",
+"8% c #D2DDB5",
+"9% c #769248",
+"0% c #6C8B4A",
+"a% c #C4BB8F",
+"b% c #BCA46A",
+"c% c #B0955D",
+"d% c #AB8F59",
+"e% c #A78C55",
+"f% c #A0874F",
+"g% c #9D864D",
+"h% c #9C844E",
+"i% c #98814B",
+"j% c #988249",
+"k% c #978148",
+"l% c #978149",
+"m% c #967F49",
+"n% c #97804A",
+"o% c #99824C",
+"p% c #99834C",
+"q% c #9C834E",
+"r% c #D4C89B",
+"s% c #FBF9F8",
+"t% c #D5D9DB",
+"u% c #C4D1DB",
+"v% c #BBD0E1",
+"w% c #B4D0E8",
+"x% c #A3C7E7",
+"y% c #97C1E5",
+"z% c #8BBAE3",
+"A% c #7FB3DF",
+"B% c #79AFDD",
+"C% c #7DB2DC",
+"D% c #A2C5E3",
+"E% c #D0DFEE",
+"F% c #F0F3F4",
+"G% c #ECEDED",
+"H% c #DCD3D1",
+"I% c #D7A28C",
+"J% c #D2BDB7",
+"K% c #EEEFEF",
+"L% c #B5C681",
+"M% c #6A8648",
+"N% c #6D8E4A",
+"O% c #C1BB8D",
+"P% c #BDA469",
+"Q% c #B2985F",
+"R% c #AE925B",
+"S% c #A88C56",
+"T% c #A58A54",
+"U% c #9F8751",
+"V% c #9C844F",
+"W% c #9A844D",
+"X% c #9E8550",
+"Y% c #DACEA6",
+"Z% c #FDFEFE",
+"`% c #DDEBF4",
+" & c #AACBE6",
+".& c #82B0DA",
+"+& c #86B5E0",
+"@& c #9AC4E8",
+"#& c #A5CCEC",
+"$& c #96C2E8",
+"%& c #88B9E4",
+"&& c #7AB1E0",
+"*& c #6CA8DB",
+"=& c #5EA0D6",
+"-& c #539AD3",
+";& c #4F90CC",
+">& c #5689C6",
+",& c #799DCD",
+"'& c #C8D6E9",
+")& c #F7F9FA",
+"!& c #DADCDE",
+"~& c #F4F6F1",
+"{& c #8FA855",
+"]& c #6A8749",
+"^& c #6E924A",
+"/& c #BBB886",
+"(& c #BEA669",
+"_& c #B3985F",
+":& c #AE945A",
+"<& c #A98E59",
+"[& c #A68B55",
+"}& c #A28852",
+"|& c #A18852",
+"1& c #9D854F",
+"2& c #9B844E",
+"3& c #9A834D",
+"4& c #9A844E",
+"5& c #9F844D",
+"6& c #D9CFA8",
+"7& c #EEF4F8",
+"8& c #4593CD",
+"9& c #5196D0",
+"0& c #6CA5D9",
+"a& c #86B6E1",
+"b& c #A1C9EB",
+"c& c #A0C9EC",
+"d& c #92C0E7",
+"e& c #84B7E2",
+"f& c #76AEDD",
+"g& c #68A5DA",
+"h& c #5A9ED5",
+"i& c #5197D1",
+"j& c #4E8CC9",
+"k& c #4C80C1",
+"l& c #4875B9",
+"m& c #4E71B5",
+"n& c #879DC9",
+"o& c #E7EBF3",
+"p& c #F7F9F4",
+"q& c #A0AE7E",
+"r& c #76904E",
+"s& c #71964B",
+"t& c #C2BD8E",
+"u& c #B39860",
+"v& c #AD9358",
+"w& c #A78C57",
+"x& c #A88D56",
+"y& c #A58954",
+"z& c #A38853",
+"A& c #9E8751",
+"B& c #9B854F",
+"C& c #A0864F",
+"D& c #DFD5AD",
+"E& c #B7D4EA",
+"F& c #388BCA",
+"G& c #589AD2",
+"H& c #74A9DB",
+"I& c #8EBCE5",
+"J& c #9DC6EB",
+"K& c #8EBDE5",
+"L& c #80B5E2",
+"M& c #72ACDD",
+"N& c #65A3D9",
+"O& c #569DD4",
+"P& c #5194D0",
+"Q& c #4E87C6",
+"R& c #4A7CBE",
+"S& c #4771B6",
+"T& c #4667AF",
+"U& c #445EA8",
+"V& c #ACB5D3",
+"W& c #F8F8F5",
+"X& c #BBC1A9",
+"Y& c #8C9E63",
+"Z& c #B9B881",
+"`& c #BFA769",
+" * c #B59A63",
+".* c #AD925C",
+"+* c #AA8F58",
+"@* c #A88B56",
+"#* c #A48853",
+"$* c #9C864F",
+"%* c #A38952",
+"&* c #E1D7B1",
+"** c #7CB2DA",
+"=* c #438FCC",
+"-* c #619ED5",
+";* c #7BAEDE",
+">* c #96C2E7",
+",* c #A6CDED",
+"'* c #98C4E9",
+")* c #8BBBE4",
+"!* c #7CB2E0",
+"~* c #6EA9DC",
+"{* c #61A1D7",
+"]* c #549BD3",
+"^* c #5091CE",
+"/* c #4C84C4",
+"(* c #4A79BC",
+"_* c #466EB4",
+":* c #4464AC",
+"<* c #4359A4",
+"[* c #C8CBD9",
+"}* c #FEFEFB",
+"|* c #F4E1B4",
+"1* c #FAF4E5",
+"2* c #F7F8F8",
+"3* c #D8DAD5",
+"4* c #CAC19E",
+"5* c #BFA76A",
+"6* c #B0935C",
+"7* c #AB8E58",
+"8* c #A48954",
+"9* c #A08551",
+"0* c #A08852",
+"a* c #9D8650",
+"b* c #97814B",
+"c* c #9C854F",
+"d* c #9D8750",
+"e* c #A48B53",
+"f* c #E2DAB5",
+"g* c #FBFCFC",
+"h* c #4793CC",
+"i* c #4C93CE",
+"j* c #68A2D7",
+"k* c #82B3E1",
+"l* c #9DC7EA",
+"m* c #A2CAEC",
+"n* c #94C1E7",
+"o* c #86B8E3",
+"p* c #78AFDF",
+"q* c #6AA7DB",
+"r* c #5D9FD7",
+"s* c #5198D2",
+"t* c #4F8DCB",
+"u* c #4C81C2",
+"v* c #4876B9",
+"w* c #466BB1",
+"x* c #4560AA",
+"y* c #5263A5",
+"z* c #D2D5D7",
+"A* c #F7F2E3",
+"B* c #D69F41",
+"C* c #D2A25A",
+"D* c #F1DDB2",
+"E* c #FCFAF0",
+"F* c #E1D7BE",
+"G* c #B59961",
+"H* c #AE8E58",
+"I* c #AE8F59",
+"J* c #A58A53",
+"K* c #A18652",
+"L* c #9E8750",
+"M* c #A38D54",
+"N* c #E1DDB7",
+"O* c #D8E7F2",
+"P* c #3389C8",
+"Q* c #5497D1",
+"R* c #70A7DA",
+"S* c #8AB9E3",
+"T* c #A2CBEC",
+"U* c #9EC8EA",
+"V* c #90BEE6",
+"W* c #82B6E1",
+"X* c #74ADDD",
+"Y* c #67A4D9",
+"Z* c #589DD5",
+"`* c #5195D1",
+" = c #4D89C8",
+".= c #4A7EBF",
+"+= c #4774B7",
+"@= c #4568AF",
+"#= c #435DA7",
+"$= c #7884B3",
+"%= c #E0E1E2",
+"&= c #F1DEB0",
+"*= c #CC9241",
+"== c #C78D42",
+"-= c #D19B41",
+";= c #E5BC64",
+">= c #E4D3A5",
+",= c #C1A769",
+"'= c #B69B62",
+")= c #AC8D57",
+"!= c #AD8F59",
+"~= c #A88A54",
+"{= c #A48952",
+"]= c #A28750",
+"^= c #9E844D",
+"/= c #9E8650",
+"(= c #98824C",
+"_= c #A68C54",
+":= c #E5DEBD",
+"<= c #9CC5E3",
+"[= c #3C8DCB",
+"}= c #5D9CD4",
+"|= c #77ABDD",
+"1= c #92BEE6",
+"2= c #A6CDEE",
+"3= c #9AC5E9",
+"4= c #8CBCE5",
+"5= c #7EB3E0",
+"6= c #71AADC",
+"7= c #63A2D8",
+"8= c #549BD4",
+"9= c #5093CF",
+"0= c #4D86C6",
+"a= c #4A7BBD",
+"b= c #4770B5",
+"c= c #4465AC",
+"d= c #435BA5",
+"e= c #A3A9C0",
+"f= c #EBECED",
+"g= c #E9C67A",
+"h= c #C38842",
+"i= c #CA9041",
+"j= c #D29A40",
+"k= c #DBA63B",
+"l= c #DEC177",
+"m= c #C0A567",
+"n= c #B69A61",
+"o= c #B2925C",
+"p= c #AA8C56",
+"q= c #A78953",
+"r= c #A1864F",
+"s= c #A0854E",
+"t= c #9D834C",
+"u= c #9C834D",
+"v= c #98824B",
+"w= c #A88E56",
+"x= c #E7E0BF",
+"y= c #62A4D3",
+"z= c #4791CD",
+"A= c #64A0D6",
+"B= c #7EB1DF",
+"C= c #99C4E8",
+"D= c #A5CCED",
+"E= c #88BAE4",
+"F= c #7AB1DF",
+"G= c #6DA8DB",
+"H= c #5FA0D6",
+"I= c #529AD3",
+"J= c #4F8ECC",
+"K= c #4C82C3",
+"L= c #4978BB",
+"M= c #466DB3",
+"N= c #4463AB",
+"O= c #465AA3",
+"P= c #C9CBD1",
+"Q= c #F6F4F0",
+"R= c #DAA84C",
+"S= c #C48942",
+"T= c #CC9341",
+"U= c #D49E3E",
+"V= c #DDA83A",
+"W= c #E2C579",
+"X= c #BEA467",
+"Y= c #AF905A",
+"Z= c #9E844C",
+"`= c #99814A",
+" - c #98814C",
+".- c #A98F57",
+"+- c #E8E2C2",
+"@- c #F1F6F9",
+"#- c #388BC8",
+"$- c #4F95CF",
+"%- c #6BA4D8",
+"&- c #A0C9EB",
+"*- c #A1CAEB",
+"=- c #76AEDE",
+"-- c #69A5DA",
+";- c #4D8BC9",
+">- c #4975B9",
+",- c #456AB0",
+"'- c #445FA8",
+")- c #6574AB",
+"!- c #D8DADC",
+"~- c #F4E9CD",
+"{- c #D09840",
+"]- c #C68C41",
+"^- c #CE9640",
+"/- c #D7A13D",
+"(- c #E0AB39",
+"_- c #E9BE52",
+":- c #DBBB60",
+"<- c #D4B866",
+"[- c #CFB363",
+"}- c #C9B06A",
+"|- c #C1AB71",
+"1- c #BCA772",
+"2- c #B7A67B",
+"3- c #B2A37A",
+"4- c #AFA079",
+"5- c #AB9B74",
+"6- c #AB9B75",
+"7- c #B19E77",
+"8- c #B3A07C",
+"9- c #B09F7E",
+"0- c #B3A587",
+"a- c #BFB499",
+"b- c #C7BCA1",
+"c- c #D0C6AE",
+"d- c #F3F2E7",
+"e- c #BED8EB",
+"f- c #5799D1",
+"g- c #73A9DB",
+"h- c #8DBCE5",
+"i- c #9CC7EA",
+"j- c #80B5E1",
+"k- c #72ACDC",
+"l- c #66A3D9",
+"m- c #569CD4",
+"n- c #5094D0",
+"o- c #4D88C7",
+"p- c #4872B6",
+"q- c #4567AE",
+"r- c #445CA6",
+"s- c #8E97BA",
+"t- c #E4E6E6",
+"u- c #EED395",
+"v- c #C88F41",
+"w- c #D0993F",
+"x- c #D9A43C",
+"y- c #E3AF38",
+"z- c #EEBA33",
+"A- c #FAC82D",
+"B- c #FFCF2C",
+"C- c #FFD135",
+"D- c #FFD43F",
+"E- c #FFD64A",
+"F- c #FFDA54",
+"G- c #FFDA59",
+"H- c #FFD849",
+"I- c #FFD436",
+"J- c #FFD328",
+"K- c #FFD029",
+"L- c #F1C130",
+"M- c #C1A87F",
+"N- c #81B6DC",
+"O- c #428FCC",
+"P- c #609ED5",
+"Q- c #7AAEDD",
+"R- c #95C1E7",
+"S- c #99C4E9",
+"T- c #6EAADC",
+"U- c #61A2D7",
+"V- c #539BD3",
+"W- c #4F91CD",
+"X- c #4C85C4",
+"Y- c #4B7ABC",
+"Z- c #476FB4",
+"`- c #4259A3",
+" ; c #B7BCC9",
+".; c #F0F1F0",
+"+; c #E2B660",
+"@; c #CB9141",
+"#; c #D39C3F",
+"$; c #DCA73C",
+"%; c #E5B237",
+"&; c #F2BE32",
+"*; c #FDCA2C",
+"=; c #FFCF2E",
+"-; c #FFD238",
+";; c #FFD441",
+">; c #FFD74C",
+",; c #FFDA56",
+"'; c #FFD744",
+"); c #FFD531",
+"!; c #FFD329",
+"~; c #FFCF2A",
+"{; c #DBAD38",
+"]; c #CABFA7",
+"^; c #4A96CD",
+"/; c #4B92CD",
+"(; c #A3CBED",
+"_; c #94C1E8",
+":; c #87B8E3",
+"<; c #77B0DE",
+"[; c #5D9FD6",
+"}; c #5399D2",
+"|; c #4F8DCA",
+"1; c #4977BA",
+"2; c #466CB1",
+"3; c #4361AA",
+"4; c #5465A6",
+"5; c #D2D3D6",
+"6; c #F6F1E3",
+"7; c #D59E42",
+"8; c #C58A41",
+"9; c #CD9540",
+"0; c #D59F3D",
+"a; c #DEAA3B",
+"b; c #E8B535",
+"c; c #F4C230",
+"d; c #FFCD2B",
+"e; c #FFD030",
+"f; c #FFD33B",
+"g; c #FFD545",
+"h; c #FFD74F",
+"i; c #FFD951",
+"j; c #FFD63E",
+"k; c #FFD42C",
+"l; c #FFD229",
+"m; c #FFCD2A",
+"n; c #C79D45",
+"o; c #D2D0CA",
+"p; c #DEEAF4",
+"q; c #5497D0",
+"r; c #6FA6D9",
+"s; c #89B9E3",
+"t; c #9EC8EB",
+"u; c #91BFE6",
+"v; c #83B6E2",
+"w; c #599DD5",
+"x; c #4E89C8",
+"y; c #4B7FC0",
+"z; c #4974B8",
+"A; c #4669B0",
+"B; c #435EA8",
+"C; c #7C87B3",
+"D; c #DDDEE0",
+"E; c #F0DEB2",
+"F; c #CB9241",
+"G; c #C78D41",
+"H; c #CF9740",
+"I; c #D7A23D",
+"J; c #E1AC3A",
+"K; c #ECB834",
+"L; c #F8C62E",
+"M; c #FFCE2B",
+"N; c #FFD134",
+"O; c #FFD33E",
+"P; c #FFD648",
+"Q; c #FFD852",
+"R; c #FFDA5A",
+"S; c #FFD84C",
+"T; c #FFD539",
+"U; c #FFD02A",
+"V; c #FAC92C",
+"W; c #BFA069",
+"X; c #DCDDDF",
+"Y; c #A1C9E4",
+"Z; c #3D8DCB",
+"`; c #5C9BD3",
+" > c #76ABDB",
+".> c #A5CDED",
+"+> c #7EB3E1",
+"@> c #71ABDC",
+"#> c #5093CE",
+"$> c #4D87C5",
+"%> c #4A7BBE",
+"&> c #4771B5",
+"*> c #4565AD",
+"=> c #425BA6",
+"-> c #A5ABC1",
+";> c #E9EAEC",
+">> c #E8C77C",
+",> c #C99041",
+"'> c #D19A40",
+")> c #DBA53C",
+"!> c #E4B038",
+"~> c #F0BC32",
+"{> c #FCC92D",
+"]> c #FFCF2D",
+"^> c #FFD236",
+"/> c #FFD440",
+"(> c #FFD954",
+"_> c #FFDA58",
+":> c #FFD746",
+"<> c #FFD434",
+"[> c #FFCF29",
+"}> c #E7B833",
+"|> c #C5B291",
+"1> c #E8E9EA",
+"2> c #68A7D5",
+"3> c #4691CC",
+"4> c #99C3E8",
+"5> c #A3C8E9",
+"6> c #97BEE3",
+"7> c #8FB7DF",
+"8> c #82AEDB",
+"9> c #73A6D7",
+"0> c #629ED5",
+"a> c #569AD3",
+"b> c #508FCC",
+"c> c #4B83C3",
+"d> c #476EB2",
+"e> c #475BA4",
+"f> c #C9CDD1",
+"g> c #F3F3F0",
+"h> c #D9A74B",
+"i> c #D49D3F",
+"j> c #E7B437",
+"k> c #F3BF31",
+"l> c #FECC2B",
+"m> c #FFD02F",
+"n> c #FFD239",
+"o> c #FFD442",
+"p> c #FFD74E",
+"q> c #FFDA57",
+"r> c #FFD641",
+"s> c #FFD42E",
+"t> c #FFCD29",
+"u> c #D1A43C",
+"v> c #CFC8B9",
+"w> c #F5F5F5",
+"x> c #F5F8FA",
+"y> c #3B8DC9",
+"z> c #5195CF",
+"A> c #6F9FD3",
+"B> c #7EA0D1",
+"C> c #8097C5",
+"D> c #8D9BC3",
+"E> c #99A3C4",
+"F> c #9DA5C3",
+"G> c #9DA6C2",
+"H> c #98A2C2",
+"I> c #8A9AC0",
+"J> c #6D8ABE",
+"K> c #5F88C3",
+"L> c #5182C1",
+"M> c #4976B9",
+"N> c #435FA9",
+"O> c #6876AE",
+"P> c #D7D8D9",
+"Q> c #C68B42",
+"R> c #D6A03D",
+"S> c #EAB734",
+"T> c #F6C32F",
+"U> c #FFD032",
+"V> c #FFD33D",
+"W> c #FFD546",
+"X> c #FFD851",
+"Y> c #FFD94E",
+"Z> c #FFD63B",
+"`> c #FFD32A",
+" , c #FFD128",
+"., c #FECC2A",
+"+, c #C19C53",
+"@, c #D2D3D4",
+"#, c #D0E1EE",
+"$, c #5288C4",
+"%, c #6F89BC",
+"&, c #939DBE",
+"*, c #B2B7C8",
+"=, c #CDCFD3",
+"-, c #D4D5D6",
+";, c #D3D5D6",
+">, c #D1D2D5",
+",, c #B5BACB",
+"', c #8A99C0",
+"), c #5979B8",
+"!, c #486CB1",
+"~, c #909ABB",
+"{, c #E2E3E4",
+"], c #EED497",
+"^, c #C68C42",
+"/, c #E2AE39",
+"(, c #FAC82E",
+"_, c #FFCE2C",
+":, c #FFD33F",
+"<, c #FFD649",
+"[, c #FFD749",
+"}, c #FFD536",
+"|, c #F3C22F",
+"1, c #C0A67B",
+"2, c #E1E2E3",
+"3, c #F5F7FA",
+"4, c #D4D7E5",
+"5, c #D2D4D5",
+"6, c #D3D5D7",
+"7, c #D5D6D8",
+"8, c #D9DBDC",
+"9, c #E7E8E8",
+"0, c #EFF0F0",
+"a, c #F1F1F1",
+"b, c #EDEEEF",
+"c, c #DEDFE0",
+"d, c #C2C7D2",
+"e, c #7D8FBD",
+"f, c #4C69AE",
+"g, c #BABFCB",
+"h, c #E1B863",
+"i, c #C28742",
+"j, c #CA9141",
+"k, c #D29C3E",
+"l, c #E5B238",
+"m, c #F1BD32",
+"n, c #FDCA2B",
+"o, c #FFCF2F",
+"p, c #FFD432",
+"q, c #FFCE2A",
+"r, c #DCAF38",
+"s, c #CABCA3",
+"t, c #EDEEEE",
+"u, c #F8F8F8",
+"v, c #F2F2F3",
+"w, c #FAFAFA",
+"x, c #EAEBEB",
+"y, c #BFC4D1",
+"z, c #F5F1E3",
+"A, c #D49F42",
+"B, c #C58A42",
+"C, c #CD9440",
+"D, c #D59F3E",
+"E, c #E8B536",
+"F, c #F4C130",
+"G, c #FFD031",
+"H, c #FFD544",
+"I, c #FFD42D",
+"J, c #C79E42",
+"K, c #D2D0C9",
+"L, c #D2D3D5",
+"M, c #ECECEC",
+"N, c #FBFBFC",
+"O, c #EBEBEC",
+"P, c #F7ECCD",
+"Q, c #CE9F45",
+"R, c #CA9140",
+"S, c #D7A13C",
+"T, c #EBB834",
+"U, c #F8C52E",
+"V, c #FFD133",
+"W, c #FFD952",
+"X, c #FFD538",
+"Y, c #FFD429",
+"Z, c #FFD12A",
+"`, c #BF9E66",
+" ' c #B1B1B1",
+".' c #A5A5A5",
+"+' c #C1C0C0",
+"@' c #DAD9DA",
+"#' c #EEE4D1",
+"$' c #CDA862",
+"%' c #D3A340",
+"&' c #DCA83C",
+"*' c #E4B039",
+"=' c #EFBB33",
+"-' c #FBCA2C",
+";' c #FFD237",
+">' c #FFD64B",
+",' c #FFD747",
+"'' c #FDD229",
+")' c #F2C430",
+"!' c #DAAC3E",
+"~' c #C8B592",
+"{' c #E6E7E8",
+"]' c #D4D4D4",
+"^' c #D5D5D5",
+"/' c #B8B7B8",
+"(' c #E0E0E0",
+"_' c #E1E0DF",
+":' c #CCBEA4",
+"<' c #CCAA61",
+"[' c #DBAD3E",
+"}' c #EFBE33",
+"|' c #FCCC2C",
+"1' c #FECF30",
+"2' c #FED239",
+"3' c #FED343",
+"4' c #FED64D",
+"5' c #FED855",
+"6' c #FBD451",
+"7' c #F2C841",
+"8' c #E2B73D",
+"9' c #D0A749",
+"0' c #C9AC78",
+"a' c #CCC1AE",
+"b' c #D3D3D4",
+"c' c #D3D4D5",
+"d' c #F2F3F3",
+"e' c #F0F1F2",
+"f' c #DADBDC",
+"g' c #CEC8BC",
+"h' c #C9B695",
+"i' c #CDB171",
+"j' c #D3AE56",
+"k' c #D6AE4A",
+"l' c #D7AE4A",
+"m' c #D4AC4E",
+"n' c #CFAA5A",
+"o' c #CAAB6F",
+"p' c #C9B38C",
+"q' c #CCC2AE",
+"r' c #D1D1CF",
+"s' c #F1F2F3",
+"t' c #D6D7D7",
+"u' c #D3D3D5",
+"v' c #D3D4D4",
+"w' c #D2D4D6",
+"x' c #D2D5D6",
+"y' c #D5D6D7",
+"z' c #ECEDEE",
+"A' c #FAFAFB",
+"B' c #F6F6F6",
+"C' c #E7E8E9",
+"D' c #EAEBEC",
+"E' c #EFEFF0",
+". . . . . . . . . . . . . . + @ # $ % & * = - . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . ; > , ' ) ! ~ { ] ^ / ( _ : < . . . . . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . [ } | 1 2 3 4 5 6 7 8 9 0 a b c d 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 X Y Z ` ...+.@.#.$.%.&.*.=.-.. ;.G >.,.'.).!.~.{.].^./.(._.:.. . . . . ",
+". . . . . . . . [ <.[.}.|.1.2.3.4.5.6.7.8.9.0.a.b.c.d.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.. . . . . . t.U.V.W.X.Y.Z.G . ",
+". . . . . . . . `. +.+++@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+. . [ + |+1+2+3+4+5+6+t.. ",
+". . . . . . . . 7+8+9+0+a+b+c+~ d+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+4 5 Q+7 R+S+T+U+V+W+X+c.Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@",
+". . . . . . . (@_@:@<@[@s t }@|@1@2@3@4@A B C 5@6@7@8@9@0@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@",
+". . . . . . . v@w@x@y@z@X A@Z B@C@..-+D@i+$.E@&.F@G@H@I@J@K@L@M@N@O@P@Q@R@i@S@T@U@V@W@X@Y@Z@`@^@ #. ",
+". . . . . . . .#+#@###1.2.$#4.5.%#&#*#9.=#a.-#c.d.;#>#,#'#)#!#~#{#]#^#/#=@-@(#l@_#:#<#[#Y@/.}#^@>#. ",
+". . . . . . + |#v.w.1#2#z.3#4#C.D.E.F.G.H.5#J.K.6#7#8#9#0#a#b#c#d#e#&@f#g#j@U@l@h#i#j#k#l#m#n#o#p#. ",
+". . . . . . `. +q#++r##+s#%+t#u#=+-+v#w#x#'+y#F@~+z#A#B#C#D#E#F#G#H#g@h@I#J#T@l@K#L#M#N#O#P#Q#R#. . ",
+". . . . . . S#T#U#V#W#b+X#Y#Z#`# $.$+$@$j+#$l+$$%$&$*$=$-$;$>$,$'$)$!$~${$]$^$/$($_$:$<$[$}$|$1$. . ",
+". . . . . t.2$3$}.4$5$6$7$8$9$0$a$b$c$d$e$X+c.f$g$h$i$0#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$6@U$V$9@W$X$Y$Z$`$ %.%+%@%#%$%%%&%*%=%-%;%>%,%'%)%!%. . ",
+". . . . . ~%{%]%K$^%/%(%_%:%<%[%}%|%1%2%3%4%5%6%7%8%9%0%a%b%c%d%e%f%g%h%i%j%k%l%m%m%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%n%i%m%m%n%i%o%n%W%X%Y%. . ",
+". . . . Z%`% &.&+&@&#&$&%&&&*&=&-&;&>&,&'&)&K+!&~&{&]&^&/&(&_&:&<&[&}&|&1&2&3&o%o%i%o%3&3&4&5&6&. . ",
+". . . . 7&8&9&0&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p#p&q&r&s&t&(&u&v&w&x&y&z&|&A&2&3&2&3&o%3&2&B&C&D&. . ",
+". . . . E&F&G&H&I&#&J&K&L&M&N&O&P&Q&R&S&T&U&V&. ;.W&X&Y&Z&`& *`$.*+*@*#*z&U%2&o%o%2&3&2&2&$*%*&*. . ",
+". . . . **=*-*;*>*,*'*)*!*~*{*]*^*/*(*_*:*<*[*}*|*1*2*3*4*5* *6*7*x&e%8*9*0*a*b*o%c*c*c*A&d*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*5*G*H*I*+*J*8*K*U%a*b*3&a*2&a*A&L*M*N*. . ",
+". . . O*P*Q*R*S*T*U*V*W*X*Y*Z*`* =.=+=@=#=$=%=&=*===-=;=>=,='=)=!=~={=]=^=/=o%(=c*c*o%c*A&d*_=:=. . ",
+". . . <=[=}=|=1=2=3=4=5=6=7=8=9=0=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=i%v=3&3&3&a*a*d*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=X=u&Y=p=q=s=s=Z=`=i%v=3&i%3&3& -c*.-+-. . ",
+". . @-#-$-%-a&&-*-d&e&=---h&i&;-k&>-,-'-)-!-~-{-]-^-/-(-_-:-<-[-}-|-1-2-3-4-5-6-7-8-9-0-a-b-c-d-. . ",
+". . e-F&f-g-h-D=i-K&j-k-l-m-n-o-R&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-X-Y-Z-:*`- ;.;+;h=@;#;$;%;&;*;=;-;;;>;,;,;';);!;~;{;];^@>#. . . . . . ",
+". s.^;/;j*k*i-(;_;:;<;q*[;};|;u*1;2;3;4;5;6;7;8;9;0;a;b;c;d;e;f;g;h;G-i;j;k;l;m;n;o;o#p#. . . . . . ",
+". p;P*q;r;s;m*t;u;v;X*Y*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;^@X;. . . . . . . ",
+". Y;Z;`; >V*.>3=h-+>@>7=8=#>$>%>&>*>=>->;>>>h=,>'>)>!>~>{>]>^>/>E-(>_>:><>J-[>}>|>^@1>. . . . . . . ",
+". 2>3>A=B=4>5>6>7>8>9>0>a>b>c>L=d>N=e>f>g>h>S=T=i>V=j>k>l>m>n>o>p>q>(>r>s>l;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>d;U>V>W>X>G-Y>Z>`> ,.,+,@,V$t.. . . . . . . ",
+"#,$,%,&,*,=,^@^@^@-,o#;,>,,,',),!,#=~,{,],^,v-w-x-/,z-(,_,N;:,<,(>G-[,},J-K-|,1,^@2,. . . . . . . . ",
+"3,4,5,6,7,8,%=9,G%0,a,K+b,9,c,d,e,f,g,K%h,i,j,k,$;l,m,n,o,-;;;>;,;,;';p,!;q,r,s,^@t,. . . . . . . . ",
+". u,1$v,w,. . . . . . . . . . w,x,y,^@z,A,B,C,D,a;E,F,d;G,f;H,h;G-i;j;I,l;m;J,K,L,M,w>w,p#. . . . . ",
+". . . . . . . . . . . . . . . . . N,O,P,Q,R,H;S,J;T,U,M;V,V>P;W,R;S;X,Y,Z,V;`,^@V$ '.'+'@'. . . . . ",
+". . . . . . . . . . . . . . . . . . . [ #'$'%'&'*'='-']>;';;>'(>_>,'<>'')'!'~'^@{']'^'/'('. . . . . ",
+". . . . . . . . . . . . . . . . . . . . . _':'<'['}'|'1'2'3'4'5'6'7'8'9'0'a'b'c'd'. . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . e'f'g'h'i'j'k'l'm'n'o'p'q'r'^@^@/%%=s.. . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . . t.s'2,t'^@u'@,v'c'w'x';,y'{+z'A'. . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . t.B'K%J+C'C'D'E'/@Z%. . . . . . . . . . . . . . "};
diff --git a/vmchooser/inc/DataEntry.h b/vmchooser/inc/DataEntry.h
index cc8460c..82b3149 100644
--- a/vmchooser/inc/DataEntry.h
+++ b/vmchooser/inc/DataEntry.h
@@ -25,11 +25,13 @@ struct DataEntry {
string network;
bool active;
+ bool locked;
+ string password;
string pools;
string xdm;
int priority;
- string command;
+ string command;
};
diff --git a/vmchooser/inc/SWindow.h b/vmchooser/inc/SWindow.h
index e3888dd..e1994ec 100644
--- a/vmchooser/inc/SWindow.h
+++ b/vmchooser/inc/SWindow.h
@@ -4,27 +4,52 @@
#include <fltk/Window.h>
#include <fltk/ReturnButton.h>
-#include <fltk/MultiBrowser.h>
+#include <fltk/Browser.h>
#include <fltk/TextDisplay.h>
#include <fltk/ItemGroup.h>
+#include <fltk/Item.h>
+#include <fltk/SharedImage.h>
+#include <fltk/Image.h>
+#include <fltk/xpmImage.h>
+
#include "DataEntry.h"
+#include "functions.h"
#include <map>
+#include <unistd.h>
+#include <iostream>
class SWindow : public fltk::Window {
private:
-
+ // ReturnButton to start the session
fltk::ReturnButton go;
- fltk::MultiBrowser sel;
+
+ // Browser to select sessions
+ fltk::Browser sel;
+
+ // TextDisplay to display info about current session
fltk::TextDisplay info;
+ // TextBuffer buf is used for info
fltk::TextBuffer buf;
+
+ // currently selected Browser-Item
+ fltk::Item* curr;
+ // Two groups - Linux and VMWare
fltk::ItemGroup* entgroup;
fltk::ItemGroup* lin_entgroup;
+ // Arrays with data from .xml and .desktop files
DataEntry** ent;
DataEntry** lin_ent;
+
+
+
+
+ /**
+ * ctor with some reasonable default values
+ */
SWindow(char* p = "Choose your session!") :
fltk::Window(fltk::USEDEFAULT,fltk::USEDEFAULT,500,650,p, true),
go(10,630, 490, 20, "Ausführen"),
@@ -32,10 +57,34 @@ private:
info(10, 510, 480, 110),
buf()
{
+ border(false);
go.callback(cb_return,this);
sel.callback(cb_select, this);
+
+
+ // Array for width of Select-Columns
+ // (one Column for a lock-symbol)
+ int widths[] = { 450, 20 };
+ sel.column_widths(widths);
info.callback(cb_info, this);
+ resizable(sel);
end();
+
+ info.wrap_mode(true, 0);
+ //sel.style(fltk::Browser::default_style);
+ sel.indented(1);
+
+ /* Getting foldername of the pictures - obsolete ? */
+// pathsize = 200;
+
+ /* Var for the folder name */
+// pname = (char*) malloc(pathsize);
+// int result;
+//
+// result = readlink("/proc/self/exe", pname, pathsize);
+// if (result > 0) {
+// pname[result] = 0; /* add the NULL - not from readlink */
+// }
};
public:
@@ -43,6 +92,10 @@ public:
static SWindow instance;
return &instance;
}
+
+
+ int pathsize;
+ char* pname; /* Holds the current absolute path */
~SWindow() { };
@@ -60,10 +113,13 @@ public:
void cb_select();
void cb_info();
- void set_entries(DataEntry** ent);
- void set_lin_entries(DataEntry** ent);
+ void set_entries(DataEntry** ent, char* slxgroup);
+ void set_lin_entries(DataEntry** ent, char* slxgroup);
+
+ char** get_symbol(DataEntry* dat);
void free_entries();
+ void unfold_entries();
};
diff --git a/vmchooser/inc/functions.h b/vmchooser/inc/functions.h
index d45c6d4..c95170a 100644
--- a/vmchooser/inc/functions.h
+++ b/vmchooser/inc/functions.h
@@ -8,10 +8,10 @@
#include "DataEntry.h"
DataEntry** readXmlDir(char* path); /* Attention: returns malloced array */
-DataEntry** readLinSession(char* path);
+DataEntry** readLinSess(char* path);
void runImage(fltk::Widget* , void* p); /* This is thought as a callback-function for the Select-Browser */
-string buildCommand(DataEntry*); /* building command for different Virtualizer */
+string buildCommand(DataEntry&); /* building command for different Virtualizer */
glob_t* globber(char* path, char* filetype); /* Globs for a specific filetype */
diff --git a/vmchooser/main.cxx b/vmchooser/main.cxx
index d33468a..531dfc9 100644
--- a/vmchooser/main.cxx
+++ b/vmchooser/main.cxx
@@ -10,87 +10,109 @@
using namespace std;
using namespace fltk;
+
/**
* MAIN
*
+ * ----------------------
+ *
+ * main procedure of vmchooser
+ *
+ *
+ *
*/
int main(int argc, char** argv)
{
- if (argc > 1 )
- {
- if (strcmp(argv[1],"-h") | strcmp(argv[1], "--help") )
- {
- /* print help */
- printf("SessionChooser \n");
- printf("\t{-p |--path=}[path to xml files]\n");
- printf("\t{-g |--group=}[group name]\n");
- printf("\t{-h |--help}[ as first parameter - prints help ]\n");
- exit(0);
+ if (argc > 1 && !(strcmp(argv[1],"-h") | strcmp(argv[1], "--help")) ) {
+ /* print help */
+ printf("SessionChooser \n");
+ printf("\t{-p |--path=}[path to vmware (.xml) files]\n");
+ printf("\t{-l |--lpath=}[path to linux session (.desktop) files]\n");
+ printf("\t{-g |--group=}[group name]\n");
+ printf("\t{-h |--help}[ as first parameter - prints help ]\n");
+ exit(0);
}
- }
-
- char* xmlpath = NULL;
- char* slxgroup = NULL;
- for (int i=0; i<argc; i++)
- {
- /* Get path parameter - path to XML files */
- if (strstr(argv[i],"-p") != NULL)
- {
- i++;
- xmlpath = argv[i];
- }
- if (strstr(argv[i],"--path=") != NULL)
- {
- char* temp = strpbrk("=", argv[i] );
- xmlpath = (temp ++);
+ char* xmlpath = NULL;
+ char* slxgroup = NULL;
+ char* lsesspath = NULL;
+
+ for (int i=0; i<argc; i++) {
+ /* Get path parameter - path to XML files */
+ if (strstr(argv[i],"-p") != NULL) {
+ i++;
+ xmlpath = argv[i];
+ }
+ if (strstr(argv[i],"--path=") != NULL) {
+ char* temp = strpbrk("=", argv[i] );
+ xmlpath = (temp ++);
+ }
+
+ /* Get path for linux sessions */
+ if (strstr(argv[i],"-l") != NULL) {
+ i++;
+ lsesspath = argv[i];
+ }
+ if (strstr(argv[i],"--lpath=") != NULL) {
+ char* temp = strpbrk("=", argv[i] );
+ lsesspath = (temp ++);
+ }
+
+ /* Get group parameter - SLXGroup */
+ if (strstr(argv[i],"-g") != NULL) {
+ i++;
+ slxgroup = argv[i];
+ }
+ if (strstr(argv[i],"--group=") != NULL) {
+ char* temp = strpbrk("=", argv[i] );
+ slxgroup =( temp ++ );
+ }
}
- /* Get group parameter - SLXGroup */
- if (strstr(argv[i],"-g") != NULL)
- {
- i++;
- slxgroup = argv[i];
+ if (xmlpath == NULL) {
+ xmlpath="../../../../../../../session-choosers/xml/";
+ //xmlpath = "/var/lib/vmware/";
}
- if (strstr(argv[i],"--group=") != NULL)
- {
- char* temp = strpbrk("=", argv[i] );
- slxgroup =( temp ++ );
+ if (slxgroup == NULL) {
+ slxgroup = "default";
+ }
+ if (lsesspath == NULL) {
+ lsesspath = "/usr/share/xsessions/";
}
- }
-
- if (xmlpath == NULL)
- {
- xmlpath = "xmltest";
- }
- if (slxgroup == NULL)
- {
- slxgroup = "default";
- }
-
-
- /* read xml files */
- DataEntry** sessions = NULL;
- if (xmlpath != NULL)
- {
- sessions = readXmlDir(xmlpath);
- }
- else
- {
- fprintf(stderr,"Please give a path to xml directory for session images!");
- exit(1);
- }
-
- SWindow& win = *SWindow::getInstance();
-
- if (sessions != NULL)
- {
- win.set_entries(sessions);
- }
- win.show(argc,argv);
- return run();
+ /* read xml files */
+ DataEntry** sessions = NULL;
+ DataEntry** lsessions = NULL;
+ if (xmlpath != NULL) {
+ sessions = readXmlDir(xmlpath);
+ } else {
+ fprintf(stderr,"Please give a path to xml directory for session images!");
+ exit(1);
+ }
+ lsessions = readLinSess(lsesspath);
+
+ SWindow& win = *SWindow::getInstance();
+
+ if(lsessions != NULL) {
+ win.set_lin_entries(lsessions, slxgroup);
+ }
+ if (sessions != NULL) {
+ win.set_entries(sessions, slxgroup);
+ }
+
+ //cout << win.pname << endl;
+
+
+ win.unfold_entries();
+ win.show(argc,argv);
+ win.border(false);
+
+ bool retval = run();
+
+ win.free_entries();
+
+ return retval;
}
diff --git a/vmchooser/readXmlDir.cxx b/vmchooser/readXmlDir.cxx
index a6c5426..261f8ab 100644
--- a/vmchooser/readXmlDir.cxx
+++ b/vmchooser/readXmlDir.cxx
@@ -7,250 +7,290 @@
#include <glob.h>
#include <sys/types.h>
#include <sys/stat.h>
+
#include <libxml/parser.h>
#include <libxml/tree.h>
+#include <libxml/xpath.h>
+
+#include <boost/regex.hpp>
#include "inc/DataEntry.h"
+#include "inc/functions.h"
#ifdef LIBXML_TREE_ENABLED
-char* getAttribute(xmlNode* from, char* name)
+char* getAttribute(xmlDoc *doc, char* name)
{
- xmlNode* temp;
- for (temp = from->children;temp != NULL; temp = from->next)
- {
- if (temp->type == XML_ELEMENT_NODE && strcmp((const char*) temp->name, name) )
- {
- return (char*) xmlGetProp(temp, (const xmlChar*) "param");
+ xmlNode* temp;
+ xmlXPathContextPtr xp = xmlXPathNewContext(doc);
+ string bla = string("/settings/eintrag/")+ string(name)+ string("/@param");
+ if(xp == NULL) {
+ fprintf(stderr,"Error: unable to create new XPath context\n");
+ xmlFreeDoc(doc);
+ return NULL;
+ }
+ xmlXPathObjectPtr xpp = xmlXPathEvalExpression((const xmlChar*)bla.c_str(), xp);
+ if(xpp == NULL) {
+ fprintf(stderr,"Error: unable to evaluate xpath expression \"%s\"\n", bla.c_str());
+ xmlXPathFreeContext(xp);
+ xmlFreeDoc(doc);
+ return NULL;
+ }
+
+ //print_xpath_nodes(xpp->nodesetval, stdout);
+ int size;
+ size = (xpp->nodesetval) ? xpp->nodesetval->nodeNr: 0;
+ for (int i= 0; i < size; i++) {
+ temp = xpp->nodesetval->nodeTab[i];
+ if (temp->type == XML_ATTRIBUTE_NODE ) {
+ return (char*) temp->children->content;
+ } else {
+ continue;
+ }
}
- else
- {
- continue;
+ return NULL;
+}
+
+char* getNodeValue(xmlDoc *doc, char* name)
+{
+ xmlNode* temp;
+ xmlXPathContextPtr xp = xmlXPathNewContext(doc);
+ string bla = string("/settings/eintrag/")+ string(name);
+ if(xp == NULL) {
+ fprintf(stderr,"Error: unable to create new XPath context\n");
+ xmlFreeDoc(doc);
+ return NULL;
+ }
+ xmlXPathObjectPtr xpp = xmlXPathEvalExpression((const xmlChar*)bla.c_str(), xp);
+ if(xpp == NULL) {
+ fprintf(stderr,"Error: unable to evaluate xpath expression \"%s\"\n", bla.c_str());
+ xmlXPathFreeContext(xp);
+ xmlFreeDoc(doc);
+ return NULL;
+ }
+
+ //print_xpath_nodes(xpp->nodesetval, stdout);
+ int size;
+ size = (xpp->nodesetval) ? xpp->nodesetval->nodeNr: 0;
+ for (int i= 0; i < size; i++) {
+ temp = xpp->nodesetval->nodeTab[i];
+ if (temp->type == XML_TEXT_NODE ) {
+ return (char*) temp->content;
+ } else {
+ continue;
+ }
}
- }
- return NULL;
+ return NULL;
}
-DataEntry* get_entry(xmlNode * root)
+
+
+DataEntry* get_entry(xmlDoc * doc)
{
- xmlNode *eintrag = NULL;
- char *tempc = NULL;
- DataEntry* de = (DataEntry*) malloc( sizeof(DataEntry) );
-
- eintrag = root->children;
-
- if (eintrag == NULL )
- {
- fprintf(stderr, "Out of memory!\n");
- return NULL;
- }
- if (! strcmp((const char*) eintrag->name, "eintrag") )
- {
- fprintf(stderr, "Didn't find \"eintrag\"-element!");
- return NULL;
- }
- tempc = (char*) getAttribute(eintrag,"short_description");
- if (tempc != NULL )
- {
- de->short_description = tempc;
- }
- tempc = NULL;
-
- if (de->short_description.empty())
- {
- free(de);
- fprintf(stderr, "No short_description given\n");
- return NULL;
- }
-
- tempc = getAttribute(eintrag,"long_description");
- if (tempc != NULL )
- {
- de->description = tempc;
- }
- tempc = NULL;
-
- tempc = getAttribute(eintrag,"creator");
- if (tempc != NULL )
- {
- de->creator = tempc;
- }
- tempc = NULL;
-
- tempc = getAttribute(eintrag,"email");
- if (tempc != NULL )
- {
- de->email = tempc;
- }
- tempc = NULL;
-
- tempc = getAttribute(eintrag,"phone");
- if (tempc != NULL )
- {
- de->phone = tempc;
- }
- tempc = NULL;
-
- tempc = getAttribute(eintrag,"name");
- if (tempc != NULL )
- {
- de->imgname = tempc;
- }
- tempc = NULL;
-
- tempc = getAttribute(eintrag,"os");
- if (tempc != NULL )
- {
- de->os = tempc;
- }
- tempc = NULL;
-
- tempc = getAttribute(eintrag,"network");
- if (tempc != NULL )
- {
- de->network = tempc;
- }
- tempc = NULL;
-
- tempc = getAttribute(eintrag,"virtualmachine");
- if (tempc != NULL )
- {
- if ( strcmp(tempc,"vmware") )
- {
+ char *tempc = NULL;
+ DataEntry* de = new DataEntry();
+
+ tempc = getAttribute(doc,"short_description");
+ if (tempc != NULL ) {
+ de->short_description = tempc;
+ //printf("%s\n",de->short_description.c_str());
+ // replace a substring
+ std::string dest_string, dest1_string;
+ boost::regex re("\n|\r");
+ boost::regex_replace(std::back_inserter(dest_string),
+ de->short_description.begin(),
+ de->short_description.end(),
+ re,
+ " ");
+ }
+ tempc = NULL;
+
+ if (de->short_description.empty()) {
+ free(de);
+ fprintf(stderr, "No short_description given\n");
+ return NULL;
+ }
+
+ tempc = getAttribute(doc,"long_description");
+ if (tempc != NULL ) {
+ de->description = tempc;
+ }
+ tempc = NULL;
+
+ tempc = getAttribute(doc,"creator");
+ if (tempc != NULL ) {
+ de->creator = tempc;
+ }
+ tempc = NULL;
+
+ tempc = getAttribute(doc,"email");
+ if (tempc != NULL ) {
+ de->email = tempc;
+ }
+ tempc = NULL;
+
+ tempc = getAttribute(doc,"phone");
+ if (tempc != NULL ) {
+ de->phone = tempc;
+ }
+ tempc = NULL;
+
+ tempc = getAttribute(doc,"image_name");
+ if (tempc != NULL ) {
+ de->imgname = tempc;
+ }
+ tempc = NULL;
+
+ tempc = getAttribute(doc,"os");
+ if (tempc != NULL ) {
+ de->os = tempc;
+ }
+ tempc = NULL;
+
+ tempc = getAttribute(doc,"network");
+ if (tempc != NULL ) {
+ de->network = tempc;
+ }
+ tempc = NULL;
+
+
+ tempc = getAttribute(doc,"virtualmachine");
+ if (tempc != NULL ) {
+ if ( strcmp(tempc,"vmware") ) {
+ de->imgtype = VMWARE;
+ } else {
+ de->imgtype = VBOX;
+ }
+ }
+ else {
+
+
+ /* TODO: DEFAULTS TO VMWARE HERE */
de->imgtype = VMWARE;
+
+ }
+ tempc = NULL;
+
+ tempc = getAttribute(doc,"active");
+ if (tempc != NULL ) {
+ de->active = (strstr(tempc,"true")!= NULL?true:false);
}
- else
- {
- de->imgtype = VBOX;
+ tempc = NULL;
+
+ tempc = getAttribute(doc,"locked");
+ if (tempc != NULL ) {
+ de->locked = (strstr(tempc,"true")!= NULL?true:false);
}
- }
- tempc = NULL;
-
- tempc = getAttribute(eintrag,"active");
- if (tempc != NULL )
- {
- de->active = (strstr(tempc,"true")!= NULL?true:false);
- }
- tempc = NULL;
-
- tempc = getAttribute(eintrag,"pools");
- if (tempc != NULL )
- {
- de->pools = tempc;
- }
- tempc = NULL;
-
- tempc = getAttribute(eintrag,"xdm");
- if (tempc != NULL )
- {
- de->xdm = tempc;
- }
- tempc = NULL;
-
- tempc = getAttribute(eintrag,"priority");
- if (tempc != NULL )
- {
- de->priority = atoi(tempc);
- }
- tempc = NULL;
-
- return de;
+ else {
+ de->locked = false;
+ }
+ tempc = NULL;
+
+ tempc = getAttribute(doc,"pools");
+ if (tempc != NULL ) {
+ de->pools = tempc;
+ }
+ tempc = NULL;
+
+ tempc = getAttribute(doc,"xdm");
+ if (tempc != NULL ) {
+ de->xdm = tempc;
+ }
+ tempc = NULL;
+
+ tempc = getAttribute(doc,"priority");
+ if (tempc != NULL ) {
+ de->priority = atoi(tempc);
+ }
+ tempc = NULL;
+
+ return de;
}
static int errorfunc(const char* errpath, int errno)
{
- fprintf(stderr, "GLOB(): Fehler aufgetreten unter %s mit Fehlernummer %d \n",errpath, errno);
- return 0;
+ fprintf(stderr, "GLOB(): Fehler aufgetreten unter %s mit Fehlernummer %d \n",errpath, errno);
+ return 0;
}
static glob_t* globber(char* path, const char* filetype)
{
- glob_t* gResult = (glob_t*) malloc(sizeof(glob_t));
- char* temp = (char*) malloc(strlen(path)+strlen(filetype)-1);
- strcpy(temp, path);
- strcat(temp, filetype);
-
- if (glob(path, GLOB_NOSORT, &errorfunc, gResult))
- {
- fprintf(stderr, "Fehler beim öffnen des Ordners!\n");
- return NULL;
- }
- return gResult;
+ glob_t* gResult = (glob_t*) malloc(sizeof(glob_t));
+ char* temp = (char*) malloc(strlen(path)+strlen(filetype)-1);
+ strcpy(temp, path);
+ strcat(temp, filetype);
+
+ if (glob(temp, GLOB_NOSORT, &errorfunc, gResult)) {
+ fprintf(stderr, "Fehler beim Öffnen des Ordners!\n");
+ return NULL;
+ }
+ return gResult;
}
DataEntry** readXmlDir(char* path)
{
- LIBXML_TEST_VERSION
- if ( path== NULL)
- {
- return NULL;
- }
- glob_t *gResult = globber(path, "/*.xml");
-
- if ( gResult == NULL )
- {
- return NULL;
- }
-
- if ( gResult->gl_pathc == 0 )
- {
- return NULL;
- }
- xmlDoc *doc = NULL;
- xmlNode *root_element = NULL;
- int c = 0;
-
- DataEntry** result = (DataEntry**) malloc(gResult->gl_pathc * sizeof(DataEntry*) +1);
-
- for (int i=0; gResult->gl_pathv[i] != NULL; i++)
- {
- if (strstr(gResult->gl_pathv[i], "Vorlage") != NULL)
- {
- continue;
- }
- /* DEBUG */
- /* printf("%s\n", gResult->gl_pathv[i]);
- */
- struct stat m;
- stat(gResult->gl_pathv[i], &m);
-
- if ( S_ISDIR(m.st_mode) )
- {
- continue;
+ LIBXML_TEST_VERSION
+ if ( path== NULL) {
+ return NULL;
}
+ glob_t *gResult = globber(path, "/*.xml");
- doc = xmlReadFile(gResult->gl_pathv[i], NULL, XML_PARSE_RECOVER);
- if (doc == NULL)
- {
- fprintf(stderr, "error: could not parse file %s\n", gResult->gl_pathv[i]);
- continue;
+ if ( gResult == NULL ) {
+ return NULL;
}
- root_element = xmlDocGetRootElement(doc);
- if (!root_element)
- {
- fprintf(stderr, "Some error regarding reading of xml file!");
- exit(1);
+ if ( gResult->gl_pathc == 0 ) {
+ return NULL;
}
- result[c] = get_entry(root_element);
- if (result[c] != NULL)
- {
- c++;
+ xmlDoc *doc = NULL;
+ int c = 0;
+
+ DataEntry** result = (DataEntry**) malloc(gResult->gl_pathc * sizeof(DataEntry*) +1);
+
+ for (int i=0; gResult->gl_pathv[i] != NULL; i++) {
+ if (strstr(gResult->gl_pathv[i], "Vorlage") != NULL) {
+ continue;
+ }
+ /* DEBUG */
+ /* printf("%s\n", gResult->gl_pathv[i]);
+ */
+ struct stat m;
+ stat(gResult->gl_pathv[i], &m);
+
+ /* DEBUG */
+ // printf("File: %s, COUNT: %d\n", gResult->gl_pathv[i], gResult->gl_pathc);
+
+ if ( S_ISDIR(m.st_mode) ) {
+ continue;
+ }
+
+
+
+ doc = xmlReadFile(gResult->gl_pathv[i], NULL, XML_PARSE_RECOVER);
+ if (doc == NULL) {
+ fprintf(stderr, "error: could not parse file %s\n", gResult->gl_pathv[i]);
+ continue;
+ }
+
+ result[c] = get_entry(doc);
+ if (result[c] != NULL) {
+ c++;
+ }
+ xmlFreeDoc(doc);
}
- xmlFreeDoc(doc);
- }
- free(gResult);
- result[c] = NULL;
- return result;
+ free(gResult);
+ result[c] = NULL;
+ return result;
}
+
#else
#error "Tree Support for libxml2 must be available!"
diff --git a/vmchooser/runImage.cxx b/vmchooser/runImage.cxx
index 76b183b..52b1dc4 100644
--- a/vmchooser/runImage.cxx
+++ b/vmchooser/runImage.cxx
@@ -2,31 +2,70 @@
#include "inc/DataEntry.h"
#include "inc/SWindow.h"
+#include <sys/wait.h>
+#include <iostream>
-
+/** *************************************************************
+ * void runImage runs a Image - building the commandline
+ * and executes it using system()
+ ***************************************************************/
void runImage(fltk::Widget*, void* p)
{
- if ( p == NULL )
- {
- return;
- }
+ /* printf("runImage called\n"); */
+ if ( p == NULL ) {
+ return;
+ }
+
DataEntry& dat = *((DataEntry*) p);
- SWindow& win = *SWindow::getInstance();
+
+ string comm = buildCommand(dat);
- if (! dat.command.empty())
- {
- system(dat.command.c_str());
- win.hide();
- }
- exit(0);
-}
+ /* No command here - faulty session ?!? */
+ if( comm.empty() ) {
+ return;
+ }
+ pid_t pid;
+ int status;
+ pid = fork();
+
+ switch( pid ) {
+ case -1:
+ cout << "Something went wrong while forking!" << endl;
+ return;
+ break;
+ case 0:
+ system( comm.c_str() );
+ exit(0);
+ break;
+ default:
+ if( waitpid( pid, &status, 0 ) == -1 ) {
+ cerr << "No child with this pid (" << pid << ")" << endl;
+ }
+ else {
+ exit(0);
+ }
+ break;
+ }
+}
+/**
+ * Helper-function for runImage(Widget, void) - builds the command
+ **/
string buildCommand(DataEntry& dat)
{
- if (dat.imgtype == VMWARE)
- {
- return string("vmrun ").append(dat.imgname);
- }
+ if (dat.imgtype == VMWARE) {
+ // run-vmware.sh imagename os(Window-Title) network
+ return string("/var/X11R6/bin/run-vmware.sh \"/var/lib/vmware/")
+ .append(dat.imgname)
+ .append("\" \"")
+ .append(dat.os)
+ .append("\" \"")
+ .append(dat.network)
+ .append("\"");
+ }
+ if(! dat.command.empty() ) {
+ return dat.command;
+ }
return string();
}
diff --git a/vmchooser/SessChoo.kdevelop b/vmchooser/vmchooser.kdevelop
index 1211830..2fe4268 100644
--- a/vmchooser/SessChoo.kdevelop
+++ b/vmchooser/vmchooser.kdevelop
@@ -7,20 +7,20 @@
<projectmanagement>KDevCustomProject</projectmanagement>
<primarylanguage>C++</primarylanguage>
<ignoreparts/>
- <projectname>SessChoo</projectname>
- <projectdirectory>.</projectdirectory>
+ <projectname>vmchooser</projectname>
+ <projectdirectory>./</projectdirectory>
<absoluteprojectpath>false</absoluteprojectpath>
- <description></description>
- <defaultencoding></defaultencoding>
- <versioncontrol></versioncontrol>
+ <description/>
+ <defaultencoding/>
+ <versioncontrol/>
</general>
<kdevcustomproject>
<run>
<directoryradio>executable</directoryradio>
- <mainprogram>/home/bastian/studium/hiwi/fltk-2/SessChoo/test</mainprogram>
+ <mainprogram>/home/bastian/studium/hiwi/openslx/openslx-src-tools/trunk/os-plugins/plugins/vmchooser/vmchooser</mainprogram>
<programargs>-p xmltest</programargs>
<globaldebugarguments>-p xmltest</globaldebugarguments>
- <globalcwd>/home/bastian/studium/hiwi/fltk-2/SessChoo</globalcwd>
+ <globalcwd>/home/bastian/studium/hiwi/openslx/openslx-src-tools/trunk/os-plugins/plugins/vmchooser</globalcwd>
<useglobalprogram>false</useglobalprogram>
<terminal>false</terminal>
<autocompile>false</autocompile>
@@ -47,13 +47,13 @@
<blacklist/>
<build>
<buildtool>make</buildtool>
- <builddir></builddir>
+ <builddir/>
</build>
<other>
<prio>0</prio>
- <otherbin></otherbin>
- <defaulttarget></defaulttarget>
- <otheroptions></otheroptions>
+ <otherbin/>
+ <defaulttarget/>
+ <otheroptions/>
<selectedenvironment>default</selectedenvironment>
<environments>
<default/>
@@ -64,9 +64,9 @@
<numberofjobs>0</numberofjobs>
<prio>0</prio>
<dontact>false</dontact>
- <makebin></makebin>
- <defaulttarget></defaulttarget>
- <makeoptions></makeoptions>
+ <makebin/>
+ <defaulttarget/>
+ <makeoptions/>
<selectedenvironment>default</selectedenvironment>
<environments>
<default/>
@@ -75,11 +75,11 @@
</kdevcustomproject>
<kdevdebugger>
<general>
- <dbgshell></dbgshell>
- <gdbpath></gdbpath>
- <configGdbScript></configGdbScript>
- <runShellScript></runShellScript>
- <runGdbScript></runGdbScript>
+ <dbgshell/>
+ <gdbpath/>
+ <configGdbScript/>
+ <runShellScript/>
+ <runGdbScript/>
<breakonloadinglibs>true</breakonloadinglibs>
<separatetty>false</separatetty>
<floatingtoolbar>false</floatingtoolbar>
@@ -180,7 +180,7 @@
<includePaths>.;</includePaths>
</codecompletion>
<creategettersetter>
- <prefixGet></prefixGet>
+ <prefixGet/>
<prefixSet>set</prefixSet>
<prefixVariable>m_,_</prefixVariable>
<parameterName>theValue</parameterName>
@@ -193,7 +193,7 @@
<orientation>Vertical</orientation>
</splitheadersource>
<references>
- <pcs>automatic_%2Fhome%2Fbastian%2Fstudium%2Fhiwi%2Ffltk-2%2FSessChoo</pcs>
+ <pcs>automatic_%2Fhome%2Fbastian%2Fstudium%2Fhiwi%2Fopenslx%2Fopenslx-src-tools%2Ftrunk%2Fos-plugins%2Fplugins%2Fvmchooser%2Fvmchooser</pcs>
</references>
</kdevcppsupport>
<cppsupportpart>
@@ -203,15 +203,15 @@
</filetemplates>
</cppsupportpart>
<ctagspart>
- <customArguments></customArguments>
- <customTagfilePath>/home/bastian/studium/hiwi/fltk-2/SessChoo/tags</customTagfilePath>
+ <customArguments/>
+ <customTagfilePath>/home/bastian/studium/hiwi/openslx/openslx-src-tools/trunk/os-plugins/plugin/vmchooser/tags</customTagfilePath>
<activeTagsFiles/>
</ctagspart>
<kdevdocumentation>
<projectdoc>
- <docsystem></docsystem>
- <docurl></docurl>
- <usermanualurl></usermanualurl>
+ <docsystem/>
+ <docurl/>
+ <usermanualurl/>
</projectdoc>
</kdevdocumentation>
<kdevfileview>