summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-11 08:10:59 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-11 08:10:59 +0000
commit19f9c3f434e0648b1952102c819ebee45de6e1e3 (patch)
treee913a90912ca3f51fa0db0c048df3595f4b6f1d7
downloaddesktop-effects-tde-19f9c3f4.tar.gz
desktop-effects-tde-19f9c3f4.zip
Added KDE3 version of Desktop Effects
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/desktop-effects-kde@1101884 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
-rw-r--r--25enable-compiz3
-rw-r--r--DesktopEffects/DesktopEffectsCommon.py230
-rw-r--r--DesktopEffects/DesktopEffectsDialog.py2777
-rwxr-xr-xDesktopEffects/DesktopEffectsKDE.py149
-rwxr-xr-xDesktopEffects/DesktopEffectsKDE4.py146
-rw-r--r--DesktopEffects/DesktopEffectsQt4Dialog.py225
-rw-r--r--DesktopEffects/__init__.py0
-rw-r--r--data/BlankEffects.ini0
-rw-r--r--data/DesktopEffectsDialog.ui483
-rw-r--r--data/DesktopEffectsQt4Dialog.ui320
-rw-r--r--data/HighEffects.ini24
-rw-r--r--data/MediumEffects.ini18
-rw-r--r--data/extraeffects.pngbin0 -> 5434 bytes
-rw-r--r--data/noeffects.pngbin0 -> 3154 bytes
-rw-r--r--data/standardeffects.pngbin0 -> 8839 bytes
-rwxr-xr-xdesktop-effects-kde33
-rw-r--r--desktop-effects-kde.desktop10
-rwxr-xr-xdesktop-effects-kde432
-rw-r--r--po/desktop-effects-kde.pot101
-rw-r--r--setup.py56
20 files changed, 4607 insertions, 0 deletions
diff --git a/25enable-compiz b/25enable-compiz
new file mode 100644
index 0000000..69ca556
--- /dev/null
+++ b/25enable-compiz
@@ -0,0 +1,3 @@
+if [ -e $HOME/.kde3/share/config/compizasWM ] ; then
+ export KDEWM="/opt/kde3/bin/compiz"
+fi
diff --git a/DesktopEffects/DesktopEffectsCommon.py b/DesktopEffects/DesktopEffectsCommon.py
new file mode 100644
index 0000000..2212b02
--- /dev/null
+++ b/DesktopEffects/DesktopEffectsCommon.py
@@ -0,0 +1,230 @@
+# -*- coding: utf-8 -*-
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# Copyright 2007-2008 Martin Böhm <martin.bohm@kubuntu.org>
+# Copyright 2007-2008 Michael Anderson <nosrednaekim@gmail.com>
+
+# a class hosting the desktop-independent methods for the Desktop
+# Effects Dialog
+
+import sys
+import os
+from optparse import OptionParser
+
+# for adept batch launching
+import subprocess
+# for compiz-kde package checking
+import apt_pkg
+from apt.progress import OpProgress
+
+import gettext
+def _(str):
+ return unicode(gettext.gettext(str), 'UTF-8')
+def __(catalog,str):
+ return unicode(gettext.dgettext(catalog, str), 'UTF-8')
+def utf8(str):
+ if isinstance(str, unicode):
+ return str
+ return unicode(str, 'UTF-8')
+
+class DesktopEffectsCommon(object):
+ def __init__(self):
+ self.action = 0
+ self.ibText = ""
+ self.check()
+ self.DATADIR = "/opt/kde3/share/apps/desktop-effects-kde/"
+
+ def checkInstalled(self):
+ progress = OpProgress()
+ cache = apt_pkg.GetCache(progress)
+ for pkg in cache.Packages:
+ if pkg.Name == "compiz-kde-kde3":
+ if pkg.CurrentVer is not None:
+ return True
+ # otherwise
+ return False
+
+ def checkEnabled(self):
+ '''checks if the compizasWM file is present, and if so, reads what mode we are in'''
+ if os.path.exists(os.path.expanduser("~/.kde3/share/config/compizasWM")):
+ compizasWM = open(os.path.expanduser("~/.kde3/share/config/compizasWM"))
+ state = compizasWM.readline()
+ return state
+ else:
+ return False
+
+ def check(self):
+ ''' checks the state and changes the UI accordingly. '''
+ self.installed = self.checkInstalled()
+ self.enabled = self.checkEnabled()
+ if(self.installed == True):
+ self.ibText = _("&Remove Desktop Effects")
+ self.showWarning()
+ self.enable()
+ self.pText = _("The Compiz engine is installed in your system.")
+ # remove, not install
+ self.rm = True
+ else:
+ self.pText = _("In order for Compiz Desktop Effects to work,"
+ " the Compiz engine must be installed on your system.")
+ self.ibText = _("&Install Desktop Effects")
+ self.hideWarning()
+ self.disable()
+ # install, not remove
+ self.rm = False
+ #self.effectsBox.setDisabled(True)
+
+ def showWarning(self):
+ ''' shows the warning information, should be implemented in the UI class '''
+ raise NotImplementedError
+
+ def hideWarning(self):
+ ''' hides the warning, should be implemented in the UI class '''
+ raise NotImplementedError
+
+ def disable(self):
+ ''' disables the options, should be implemented in the UI '''
+ raise NotImplementedError
+
+ def enable(self):
+ ''' enables the options, should be implemented in the UI '''
+ raise NotImplementedError
+
+ def done(self):
+ ''' action to be done after the user clicks the "cancel" button '''
+ print "signalled" # DEBUG
+ self.close()
+
+ def apply(self):
+ ''' action to be done after the user clicks the "apply button '''
+ print "apply clicked" #DEBUG
+ if self.action > 0:
+ if self.action == 1:
+ self.disableEffects()
+
+ elif self.action == 2:
+ self.enableStandardEffects()
+ elif self.action == 3:
+ self.enableExtraEffects()
+ elif self.action == 4:
+ self.enableCustomEffects()
+ if not self.enabled and not self.action == 1:
+ os.spawnl(os.P_NOWAIT, "/opt/kde3/bin/compiz", "--replace")
+ self.enabled = True
+
+ def btnInstallClicked(self):
+ if self.installed == True:
+ self.remove()
+ return
+ try:
+ ''' Installs the Compiz package. Not very nice as it is distribution dependent. '''
+ subprocess.call(['kdesudo', '-c' '/opt/kde3/bin/adept_batch install compiz-kde-kde3 compiz-fusion-plugins-main-kde3 compiz-fusion-plugins-extra-kde3'])
+ except:
+ subprocess.call(['kdialog', '--sorry', 'Adept Batch is not installed on this system'])
+ self.check()
+
+
+ # the functions toggled by radio boxes
+ def noEffects(self):
+ print "radio toggled" # DEBUG
+ self.action = 1
+# self.apply()
+ def standardEffects(self):
+ print "radio toggled" # DEBUG
+ self.action = 2
+# self.apply()
+ def extraEffects(self):
+ print "radio toggled" # DEBUG
+ self.action = 3
+ def customEffects(self):
+ print "radio toggled" # DEBUG
+ self.action = 4
+# self.apply()
+
+ def remove(self):
+ removeAnswer = subprocess.call(['kdialog', "--warningyesno", "Are you sure you wish to remove Compiz KDE?"])
+ if removeAnswer == 0:
+ try:
+ ''' Remove the Compiz package. Not very nice as it is distribution dependent. '''
+ subprocess.call(['kdesudo', '-c' '/opt/kde3/bin/adept_batch remove compiz-kde-kde3 compiz-fusion-plugins-main-kde3 compiz-fusion-plugins-extra-kde3'])
+ except:
+ subprocess.call(['kdialog', '--sorry', 'Adept Batch is not installed on this system'])
+
+
+ def disableEffects(self):
+ '''remove compiz as the default WM'''
+ os.remove(os.path.expanduser("~/.kde3/share/config/compizasWM"))
+ self.enabled = False
+
+
+ def enableStandardEffects(self):
+ '''copy the .ini to Default.ini and enable compiz as default WM'''
+ code = os.system('mkdir -p ~/.config/compiz/compizconfig')
+ try:
+ enable = open(os.path.expanduser("~/.kde3/share/config/compizasWM"),"w")
+ if enable.readline() == "custom":
+ customeffects = open(os.path.expanduser("~/.config/compiz/compizconfig/Default.ini"),"r")
+ backupfile = open(os.path.expanduser("~/.config/compiz/compizconfig/Custom.ini"),"w")
+ backupfile.write(customeffects)
+ backupfile.close()
+ customeffects.close()
+ except:
+ print "error"
+ enable.write("standardeffects")
+ enable.close()
+ config = open(os.path.join(self.DATADIR,"MediumEffects.ini"),"r")
+ dest = open(os.path.expanduser("~/.config/compiz/compizconfig/Default.ini"),"w")
+ dest.write(config.read())
+ dest.close()
+ config.close()
+ print "standardEffects enabled" #DEBUG
+
+ def enableExtraEffects(self):
+ ''' copy the extraeffects.ini to Default.ini and enable compiz as defaultWM'''
+ code = os.system('mkdir -p ~/.config/compiz/compizconfig')
+ if os.path.exists(os.path.expanduser("~/.kde3/share/config/compizasWM")):
+ enable = open(os.path.expanduser("~/.kde3/share/config/compizasWM"),"r")
+ if enable.readline() == "custom":
+ customeffects = open(os.path.expanduser("~/.config/compiz/compizconfig/Default.ini"),"r")
+ backupfile = open(os.path.expanduser("~/.config/compiz/compizconfig/Custom.ini"),"w")
+ backupfile.write(customeffects)
+ backupfile.close()
+ customeffects.close()
+ enable.close()
+
+ enable = open(os.path.expanduser("~/.kde3/share/config/compizasWM"),"w")
+ enable.write("extraeffects")
+ enable.close()
+ config = open(os.path.join(self.DATADIR,"HighEffects.ini"),"r")
+ dest = open(os.path.expanduser("~/.config/compiz/compizconfig/Default.ini"),"w")
+ dest.write(config.read())
+ dest.close()
+ config.close()
+ print "extraEffects enabled" #DEBUG
+
+ def enableCustomEffects(self):
+ code = os.system('mkdir -p ~/.config/compiz/compizconfig')
+ try:
+ config = open(os.path.expanduser("~/.config/compiz/compizconfig/Custom.ini"),"r")
+ except:
+ print "no custom effects file, creating blank .ini" #DEBUG
+ config = open(os.path.join(self.DATADIR,"BlankEffects.ini"),"r")
+ enable = open(os.path.expanduser("~/.kde3/share/config/compizasWM"),"w")
+ enable.write("custom")
+ enable.close()
+ dest = open(os.path.expanduser("~/.config/compiz/compizconfig/Default.ini"),"w")
+ dest.write(config.read())
+ dest.close()
+ config.close()
diff --git a/DesktopEffects/DesktopEffectsDialog.py b/DesktopEffects/DesktopEffectsDialog.py
new file mode 100644
index 0000000..69d70d1
--- /dev/null
+++ b/DesktopEffects/DesktopEffectsDialog.py
@@ -0,0 +1,2777 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'data/DesktopEffectsDialog.ui'
+#
+# Created: Pá lis 2 18:10:24 2007
+# by: The PyQt User Interface Compiler (pyuic) 3.17.3
+#
+# WARNING! All changes made in this file will be lost!
+
+
+import sys
+from qt import *
+from kdecore import KCmdLineArgs, KApplication
+from kdeui import *
+
+
+image0_data = \
+ "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
+ "\x49\x48\x44\x52\x00\x00\x00\x20\x00\x00\x00\x20" \
+ "\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\x00\x00\x07" \
+ "\x26\x49\x44\x41\x54\x58\x85\xb5\x97\x6b\x6c\x14" \
+ "\xd7\x15\x80\xbf\x99\x9d\x7d\xd9\xbb\xf6\x62\x7b" \
+ "\xf1\x62\x13\x6c\x20\x41\xd0\x3a\x81\x38\x85\xb8" \
+ "\x50\xc0\xa1\x91\x53\xd1\xa6\xaa\x28\x6a\x09\xfc" \
+ "\x71\xa5\xa4\xad\xda\x28\x49\xa5\xfe\x68\xa5\x28" \
+ "\x09\x12\xad\xaa\xa6\x0d\x28\x69\xa3\x0a\x50\xa8" \
+ "\x94\x82\x41\x49\x5d\x8a\xa1\x90\x50\x10\x2a\xa2" \
+ "\xa6\xc1\x06\x1b\xdb\xb1\x63\x03\x7e\x2d\x6b\xb3" \
+ "\xd8\xfb\x7e\x8c\x77\x67\xe7\xf6\xc7\xac\x1f\x0b" \
+ "\x86\x60\xa5\xbd\xd2\xd1\x3c\x56\x7b\xbf\xef\x9c" \
+ "\xb9\x73\x66\x06\xe6\x30\x44\x23\x2e\xd1\xc8\x1b" \
+ "\xa2\x91\xa0\x68\xe4\xc0\x9d\xbf\x6b\x47\x70\xa5" \
+ "\x0f\xf3\xc6\xc4\x5f\x70\xcd\x65\xde\x07\x85\xd7" \
+ "\x8b\x46\x82\xa2\xe5\x51\x21\x42\xdb\x85\x68\xb2" \
+ "\x8a\x83\x3f\x63\xf3\x1d\xf0\x2b\xa9\xa3\xc5\x22" \
+ "\xb4\x9f\xce\xcb\xbb\x28\xfe\x5f\x82\xfb\xc5\xbf" \
+ "\x96\x0a\x11\xfa\x89\x10\xe2\x17\x42\x88\x97\x84" \
+ "\xe8\x5d\x2b\x82\xef\xd3\x02\xe4\x69\x47\x70\xa5" \
+ "\x1b\xb8\xa2\x35\xaf\x13\x42\xbc\x2d\x52\x97\x6b" \
+ "\xc5\xed\x3f\xe0\xf5\xbd\x45\xf5\xe7\xcd\x2f\xdd" \
+ "\x07\x5c\x0b\xbc\x4e\x61\x45\x2d\x8f\x6d\x85\x92" \
+ "\x72\x20\x96\x8d\x04\xa4\x55\x38\x73\x98\x73\x97" \
+ "\x62\x3f\xfd\xda\x23\xbc\x20\x55\x6e\x58\x65\xaa" \
+ "\xd9\x01\x04\x81\x10\xa9\xee\x4b\x84\x4e\x9d\x89" \
+ "\xf6\xfb\xa9\xab\xf9\x0d\x17\x1f\x58\x40\x34\x52" \
+ "\x09\x1c\x20\xaf\xb4\x96\x15\xdb\x60\xd1\x1a\x20" \
+ "\x9a\x8d\x18\x10\x07\x61\x08\x88\xbe\xab\x64\x3a" \
+ "\x5b\xa0\xa2\x16\xa5\xa6\x3e\x0b\x0f\x02\x11\x48" \
+ "\xc7\x98\xe8\xf9\x8c\xd0\x3f\x2f\x12\x0c\xa4\x7f" \
+ "\xb4\x62\x17\x7b\xef\x2b\x90\x05\xbf\x8e\xd9\x59" \
+ "\xcf\xc3\xdf\x87\xe5\xcf\x19\x13\xe5\xc0\xb3\x02" \
+ "\x71\x3f\xe2\xd2\x19\xf4\x70\x08\x21\x29\x64\xa4" \
+ "\x22\xcc\x6b\xb7\x23\x17\x3b\x80\x10\xe8\x51\x50" \
+ "\x13\xa0\xc6\x49\xfb\x46\xb9\xd5\xf4\x1f\x46\x6f" \
+ "\x6b\xaf\xae\xde\xcd\xaf\xee\x14\x90\x67\xec\xd7" \
+ "\x53\x52\x53\xcf\x33\xa7\x61\xf9\xf3\x40\x06\xd0" \
+ "\x67\x44\x06\x12\x41\x68\x3d\x85\x38\x7d\x18\x61" \
+ "\xb1\x63\x7a\x72\x13\xca\xfc\xf9\x98\x44\x90\xf8" \
+ "\xb1\x3d\x64\xc6\xfa\x01\x15\xb4\x14\xa4\x27\x20" \
+ "\x9d\xc2\xec\xb4\xe2\xa9\xab\xc2\x53\x6a\xdf\xd5" \
+ "\xf6\x32\x0d\xf7\x13\xf8\xb3\x1e\xea\x8e\x90\x0e" \
+ "\x65\xe1\x33\x22\x1d\x87\x9e\x33\x70\x76\x3f\xc4" \
+ "\xc3\x48\x5f\x5a\x83\x5c\xf1\x08\x98\x2d\x60\xb5" \
+ "\xa1\x14\xcf\xc3\x3a\xdf\x49\xe4\xe8\x41\xd4\x8e" \
+ "\x8e\x29\xb8\xb1\x9d\x40\xb1\x48\x94\xad\x2f\xa7" \
+ "\x70\x9e\x79\xdb\x85\xe7\xf9\xe0\xea\x8f\xa7\x6f" \
+ "\xd3\x29\x01\x69\x0b\x03\x9a\x1a\x7e\x9b\xee\x3f" \
+ "\xe6\x66\x7f\xfd\x34\x7c\xb4\x13\x86\x5a\xa0\x6c" \
+ "\x09\x78\x16\x81\xcd\x6e\xc0\x15\x0b\x58\x6c\x60" \
+ "\xb5\x63\x59\xe0\xc6\xb9\xfc\x21\xc2\x1f\x9f\x27" \
+ "\x71\xb5\x77\x86\x84\x21\x22\xa3\x51\xb9\xde\x45" \
+ "\xf9\x42\x65\x6b\x34\xc9\x11\xc0\x04\xa0\x64\x1b" \
+ "\x4a\x3b\xd0\x06\xfc\x5e\x1f\x6c\x7a\x49\xae\xd8" \
+ "\x54\x40\x62\x10\xba\x0f\x42\x3a\x02\x2e\x37\xe4" \
+ "\xbb\xc0\x96\x67\x80\x27\xe1\xe6\xac\x80\xae\x83" \
+ "\x6c\x42\xc9\x73\x50\xb4\xa1\x8a\xf1\xe6\x6e\x12" \
+ "\x7d\x5e\x4a\x6a\x2a\x21\x35\x2d\x91\x1c\x53\x89" \
+ "\x8c\x66\xe8\xf2\xd3\x0c\x54\x02\xd7\xa5\xac\x40" \
+ "\x3d\x85\x55\x10\xee\x04\x08\x61\x76\xb8\xc8\x24" \
+ "\xc1\xee\x84\xfc\x02\xb0\xe6\x19\x70\x5b\x9e\x91" \
+ "\xfd\xcc\xe3\x91\x41\x63\xc1\x99\x4c\x20\x1b\xa1" \
+ "\x6b\x82\x9b\x47\x5b\x30\xe7\x9b\xf1\xac\x76\x43" \
+ "\x32\x41\x72\x34\xc2\xb5\x33\x61\x2e\x0e\x8a\x9d" \
+ "\x3f\x3c\x49\x13\x30\x00\x8c\xcb\xd2\x16\x7e\x10" \
+ "\x88\xf1\x21\xe8\xf0\xcc\x71\xd8\xf4\xae\x8b\x05" \
+ "\xd9\xfe\x61\xb1\x4d\x67\x3a\x99\x75\xce\xb1\x0d" \
+ "\xcc\x79\x60\x35\x2e\xc3\x64\xc8\x05\x4e\xca\x9f" \
+ "\xdb\x88\xb0\x39\xb9\x7e\xf4\x06\x31\x5f\x6c\x56" \
+ "\x78\xce\x6d\xd8\xb1\x87\x9f\x57\x2d\x75\xbc\xc9" \
+ "\xfa\x57\xa1\xd0\x09\xad\xfb\xd1\xbd\x5d\x48\x9e" \
+ "\x0a\x24\x67\xe1\x8c\xac\xed\xc6\xd6\x9a\x07\x4a" \
+ "\x31\x8c\x0d\x82\x16\x01\x93\x32\x55\x81\xa9\x6a" \
+ "\x98\x4c\xf4\xfd\xee\x38\xf1\xc1\x00\xe9\x34\x51" \
+ "\x6f\x88\xa6\x7c\x19\x6f\xbe\xcc\x48\x46\xa3\x4d" \
+ "\x64\x68\xcb\x69\x44\xc3\xfb\x78\x71\xa1\xc7\xfe" \
+ "\x0e\x35\x3b\xa0\xc4\x85\x7e\xbd\x85\xf4\x27\xe7" \
+ "\x31\xaf\xa8\x42\x2e\x72\xe7\xc2\x2d\x05\x20\x95" \
+ "\x43\xa4\x0f\x32\xc1\x3b\xc0\x0a\x91\xce\x61\x7c" \
+ "\x7f\xbd\x88\x62\x37\xe1\x7e\xac\x04\x99\x34\x5a" \
+ "\x38\x41\xa8\x3f\x86\xf7\x8a\x4a\x46\x23\xdc\x17" \
+ "\xe2\x9b\x77\x75\xc2\xf6\xdd\x7c\xbb\xaa\x9c\xbf" \
+ "\x53\xfd\x14\xb2\xa7\x1c\xad\xf7\x53\xd4\xf6\xab" \
+ "\xd8\x6b\x6a\x30\x95\x7a\x8c\x32\xdb\xf2\x41\x9e" \
+ "\x8f\x48\xb9\x49\x7d\x76\x02\xeb\x52\xf7\x94\x40" \
+ "\xe2\xc6\x2d\x6e\x9d\xbc\x8c\x16\x49\xb0\xa0\x6e" \
+ "\x05\x0e\x8f\x0d\x92\x71\xb4\x60\x18\xdf\xbf\x47" \
+ "\xb9\x79\x29\xc2\xc0\x98\x38\xf4\xdb\x76\xf6\xb5" \
+ "\x8d\x13\x9a\xf5\x59\x90\x3e\x2c\x89\x4c\x1a\x4c" \
+ "\x55\xd5\x28\x25\xc5\x68\x3e\x1f\xd1\xd6\x6e\xec" \
+ "\x4f\xae\xc6\xf6\xe8\x97\x11\xba\x0d\xb5\xa3\x17" \
+ "\xb5\xe3\x02\x62\x22\x81\x75\xd9\x32\x2c\x2b\xd7" \
+ "\xe0\x3b\x74\x96\x89\xb1\x18\xee\xba\x6a\xe6\xad" \
+ "\x2c\x87\x64\x0c\x92\x31\x46\xce\x5e\x67\xe8\xf4" \
+ "\x30\x37\x03\x99\xa6\xf7\x7b\xd8\x77\x74\x00\x1f" \
+ "\xe0\x07\x7c\xb3\x0a\xa4\x0e\x2b\x42\x29\xc8\x27" \
+ "\xe9\x8f\x23\xb9\x8a\xb0\x2f\x29\x43\x1b\x0b\x10" \
+ "\xb8\xe2\xc5\xbe\xaa\x8a\xcc\xc8\x20\x7a\x34\x0c" \
+ "\x80\xae\x41\x7c\x0c\x26\x54\x3b\xf3\x36\xac\xc5" \
+ "\xbd\xf9\x09\xd0\x23\x90\x8c\x31\x76\xee\x53\x86" \
+ "\x8f\x77\x93\xf0\x27\x39\xd4\xcb\xf6\x77\x3b\xe9" \
+ "\xcd\x2e\x3e\x1f\x90\xca\x59\x84\x33\x87\xda\x60" \
+ "\x15\xd6\x72\x37\x42\x17\x44\xae\xdd\x46\xcf\xc8" \
+ "\x98\x9d\x56\x24\x2d\x45\xc4\x97\x44\x08\xb0\x16" \
+ "\x80\x1a\x06\x35\xe9\xa0\x70\xed\xb7\x98\xb7\x71" \
+ "\x1d\x26\xbb\x0a\x04\x88\x76\x77\xe3\xfd\xe0\x22" \
+ "\x22\x38\xce\xc2\x95\x56\xda\xff\x16\x63\xc3\x31" \
+ "\xbe\x02\x74\x03\x89\x99\x2c\x65\x36\x01\x1d\x13" \
+ "\xd8\xf3\x91\x90\x28\x5c\xe9\x24\x15\x49\x92\x0a" \
+ "\x24\x51\xe3\x02\x2d\x9d\x42\x4b\x66\x48\x04\x21" \
+ "\xa3\x81\xb3\x7a\x03\x26\x57\x29\xc9\xa1\x9b\x68" \
+ "\x71\x3f\xb7\x3e\x3a\x8b\x3a\xe4\xa5\xac\xba\x00" \
+ "\xf7\x46\x37\x20\xc8\x68\xb1\xc9\xa9\x13\x77\xb2" \
+ "\x66\x17\x10\x26\x63\xa1\x49\x46\x81\x2c\x76\x07" \
+ "\x16\x0f\x38\x90\x28\x96\x40\x8b\xa5\x48\x4f\x94" \
+ "\xa0\x05\xae\x91\x1c\x6b\x21\xd5\xd9\xc2\xf8\x70" \
+ "\x1c\x5d\x03\xd7\x62\x07\xa5\x4f\x2f\x01\x21\x8c" \
+ "\xc0\x10\xbd\xd7\xb8\x87\x80\x0c\x76\xc7\x8c\x0b" \
+ "\x24\x65\xf7\x8d\x13\x8a\xdd\x81\xa2\x3c\x04\xc5" \
+ "\x11\x9c\x0f\x0b\x10\x50\xfa\x55\x31\x03\x6a\x9c" \
+ "\x33\xb6\x02\xa1\xcf\x51\x40\x4b\x02\x4a\x01\x98" \
+ "\x33\x53\x55\x98\x96\xc8\xee\xcb\x36\xa3\x4a\x53" \
+ "\xc0\xe9\x8c\x73\x45\xc4\xbd\xe9\xf7\x12\x98\x18" \
+ "\x0f\xb7\x85\x2e\x74\xad\x72\x6d\x5a\x0d\x56\x91" \
+ "\x93\xfd\x94\x90\xb0\x41\x26\x2f\x37\xe3\xbb\x64" \
+ "\x26\x2b\x31\x47\x01\x5d\xe3\xa9\xe1\x8e\xfe\x0f" \
+ "\x93\xb7\xc3\x5f\x2f\xdd\xfa\x0d\xe4\x12\xeb\xf4" \
+ "\x8f\x93\x02\x9a\x0d\x44\x5e\x4e\xa9\xef\xca\x3a" \
+ "\x0d\xc1\xb6\xe0\x7d\x05\xee\xf9\x52\x0a\x98\x5a" \
+ "\x5f\xe1\x48\x49\x59\xd1\x77\x17\xee\x78\x16\xd9" \
+ "\x53\x00\xb2\x94\xfd\x8b\x04\x9a\x0b\xd2\xfd\xcc" \
+ "\x5a\x7e\x35\x83\x3a\x18\xa3\xeb\xbd\x4f\xf0\xf7" \
+ "\xf8\x7d\x2d\xe3\xbc\xf5\x5a\x3b\xe7\x80\xd6\xb9" \
+ "\x08\x00\x70\xee\x05\xf6\x78\x0a\x2d\x2f\x57\x6c" \
+ "\xdb\x82\xed\xf1\x15\x46\xcb\x45\x02\x2c\x20\x6e" \
+ "\xe4\x56\x20\x99\x42\xed\x0b\x70\xa3\xb1\x1d\x6f" \
+ "\xf3\x40\x74\x38\x41\xc3\x3b\x3d\x34\xb4\x07\x19" \
+ "\x07\x86\x81\xd0\x9c\x05\x00\x4e\x6c\xe7\x95\x45" \
+ "\x45\xd6\xdd\x4b\x77\x6c\xc7\xbe\xea\x71\xe3\x81" \
+ "\x84\x8e\xf1\x54\x15\x10\x4f\xa0\x0d\xf9\x19\x3a" \
+ "\x79\x95\x1b\x27\xbb\x18\x8c\xb3\x37\x0b\x0e\x61" \
+ "\xb4\xdc\x5b\x18\xaf\x59\x77\x8d\x07\x12\x00\xf8" \
+ "\xc7\xf7\x78\xb1\xd8\xc2\xaf\x17\x6f\x7e\xd6\xe9" \
+ "\xfe\xce\x0e\xb0\xcb\x10\xed\x41\x1b\x18\x64\xe8" \
+ "\xd4\x25\x86\xce\xf7\x30\x1a\x4a\x35\x35\xf4\xb3" \
+ "\xef\x98\x17\x1f\x30\x72\x3f\xf0\x9c\x05\x00\xfe" \
+ "\xf4\x34\x1b\xab\x5c\x34\x2d\xae\xad\x73\x96\xad" \
+ "\x5f\xc7\x48\xf3\x59\x7a\x4f\x34\x13\x8c\xa6\x5a" \
+ "\x0f\x5c\x63\x67\x16\x9c\xd3\xeb\x3f\x6f\xcc\x49" \
+ "\x00\xa0\xa1\x8e\x9a\x52\x33\x1f\x2b\x66\x9b\x33" \
+ "\x10\x56\x5b\x2f\xf8\xd9\xfb\x66\x17\xad\x18\x1f" \
+ "\x0f\x03\x0f\x0a\xfe\x42\xe3\x97\x2b\x59\xb0\x7b" \
+ "\x35\xaf\x01\x4f\x00\xcb\x00\xe7\xff\x1d\x3a\xcb" \
+ "\x30\xc1\x17\xff\x02\xfe\x2f\x0f\x8e\x77\x9b\x06" \
+ "\xe9\x6c\x8c\x00\x00\x00\x00\x49\x45\x4e\x44\xae" \
+ "\x42\x60\x82"
+image1_data = \
+ "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d" \
+ "\x49\x48\x44\x52\x00\x00\x00\x20\x00\x00\x00\x20" \
+ "\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\x00\x00\x05" \
+ "\x54\x49\x44\x41\x54\x58\x85\xd5\x97\x5d\x6c\x14" \
+ "\x55\x14\xc7\x7f\x77\x66\x67\xf6\xb3\xed\x6e\xb7" \
+ "\x6c\xbb\x9b\x5d\x4a\x29\x4a\x2d\x05\x31\x7c\x2b" \
+ "\xd2\x18\x44\x04\xda\x0a\x41\x24\x2a\x51\xe1\x89" \
+ "\xa0\x84\x84\x44\xa3\x06\xa2\x44\xe3\x9b\x82\x3e" \
+ "\xf8\x42\x22\x89\x0f\x44\x23\x9a\x18\x2a\x1a\x13" \
+ "\x34\xf1\xa3\x04\x4b\x74\x21\xe1\x89\xef\x60\xc1" \
+ "\xd0\x16\x4a\xdb\xfd\x9a\xee\xce\xf5\x61\x66\xb7" \
+ "\x43\x69\xa1\x2d\x51\xe3\x4d\xfe\x99\xb3\x7b\x67" \
+ "\xce\xf9\xdf\x73\xff\xe7\xcc\x5c\x21\xa5\xe4\x7f" \
+ "\x39\x3a\x5b\xa8\xeb\x58\xc5\x74\x40\x01\xc4\x64" \
+ "\xfd\x28\x93\x79\x28\xd9\xca\x1e\xb7\xc2\xf9\x80" \
+ "\xc6\xb9\x8e\x55\xbc\x07\x78\x26\xeb\x4b\x9d\xe8" \
+ "\x03\x9d\x2d\xd4\x69\x0a\x5f\x85\x66\x83\xb7\x1a" \
+ "\xcc\x1e\x96\x96\x69\x7c\xf3\xeb\x35\x7a\x80\xc2" \
+ "\x44\xfd\x4d\x98\xb5\xae\x70\x40\xf5\x40\xf4\x71" \
+ "\x0b\xaa\x07\xd6\x26\xf8\x08\x28\x63\x12\x0b\x9a" \
+ "\x10\x81\x64\x2b\xeb\x04\x34\x17\x03\x17\x89\x04" \
+ "\x34\xe6\x7f\xf2\x08\x4f\x03\x5e\x26\xa8\x87\x09" \
+ "\x11\x10\x82\xbd\x9e\x6a\x08\x2d\x99\x03\x0b\x3b" \
+ "\x61\x61\x27\xa1\x25\x73\xf0\x54\xc3\xec\x10\xbb" \
+ "\x80\x72\x40\xfb\x47\x08\x24\x5b\xd9\x23\xa0\x36" \
+ "\xb6\x42\x81\x69\xbb\x41\x89\x58\x98\xb6\x9b\xd8" \
+ "\x0a\x05\xb7\x42\xb4\x7d\x39\x6f\x02\xbe\x89\xf8" \
+ "\x1d\xd7\x9e\x75\xb6\x50\xe7\x52\x38\x50\x39\x07" \
+ "\x4f\xd5\x9a\x8d\x50\xfd\x22\x20\x2d\xe8\x31\x74" \
+ "\xdf\x15\x86\xae\x9c\x46\xbb\x4e\x83\xcf\xc5\xf7" \
+ "\xc7\xba\xe9\x66\x9c\x82\x1c\x17\x81\x97\x67\xb2" \
+ "\x4f\xf3\xb2\x28\xf1\x4c\x19\xea\xac\x0f\x39\xf6" \
+ "\xdb\x55\xda\xdb\x3b\x39\x71\xe2\x2c\xf9\xbc\x49" \
+ "\xe2\xfe\x87\xf1\x68\x5f\x72\x33\x69\xb8\x63\x3a" \
+ "\xe1\x4f\xcf\xf1\x1d\x90\xb3\x59\xde\x1b\x81\x3f" \
+ "\x5a\x79\x4c\x15\xec\x8d\x2c\x53\x28\x5f\xfe\x2a" \
+ "\xd7\xf3\x0b\x38\x7a\x34\x89\x10\x02\x45\x51\xe8" \
+ "\xea\xea\x21\x18\x8e\x13\x99\x1a\x42\xde\xf8\x05" \
+ "\xf9\x27\x0d\x8d\x41\x4e\x7d\xdb\xc5\x59\x20\x7f" \
+ "\x37\xff\x77\xdd\x2b\x45\xb0\x57\x0f\x41\x64\xf5" \
+ "\x0c\xa8\x5c\x47\x36\x3b\x08\x80\x94\x12\xd3\x34" \
+ "\x01\xe8\xeb\xeb\x83\xca\x75\x44\x56\xd7\xa3\x87" \
+ "\x60\x61\x15\xbb\xb1\x04\xe9\xba\x27\x02\xc9\x56" \
+ "\x36\x0b\x78\x30\xda\x22\xa0\xe6\x15\x50\x75\x74" \
+ "\x5d\x22\xa5\x2c\x11\x30\x4d\x93\x70\x58\x07\x55" \
+ "\x87\xe8\x56\xa2\x2d\x02\xaf\xca\xcc\x83\xcb\x78" \
+ "\x09\xab\x2c\xef\x18\x63\xcc\xc9\x53\x6d\x04\x15" \
+ "\xc1\x07\xfe\x7a\x28\x5f\xb2\x0c\x02\xf3\x80\x2c" \
+ "\x55\x55\x1a\xaa\x2a\xc9\xe7\xf3\x25\xc4\xe3\x3e" \
+ "\x20\x0d\x81\x79\x94\x2f\x5a\x80\xbf\x1e\x1a\x2b" \
+ "\x78\xa3\x2d\x41\x82\xbb\x94\xe5\x98\x04\x4c\xc9" \
+ "\xdb\x40\x30\xfe\xbc\x0f\xa6\xbc\x00\x42\x02\x59" \
+ "\x20\x4b\x6d\x6d\x19\x86\x61\x60\x18\x06\xc1\xa0" \
+ "\x86\xdb\x3d\x04\x64\x40\x14\x20\xb2\x89\xf8\x73" \
+ "\x3a\x8a\xa0\x6c\x5b\x03\xaf\x03\x7e\xee\xa0\xb5" \
+ "\x51\x09\x74\xb6\x50\xa7\x08\x76\x54\x35\x83\x3e" \
+ "\x6d\x25\xe8\x09\x20\x65\x05\x21\x43\x2c\xa6\x91" \
+ "\xcd\x66\xc9\xe5\x72\xc4\x62\x9a\x3d\x97\x02\x06" \
+ "\xc0\x1d\x45\xaf\x7d\x94\xaa\x66\x88\x79\xd9\xb4" \
+ "\xbd\x81\x26\xc0\xcd\x18\x1d\x72\x54\x02\xba\xc2" \
+ "\x01\xd5\x0b\x91\xb6\x30\x54\x3c\xe1\x08\x90\x02" \
+ "\x06\x49\x24\x14\x32\x99\x0c\xe9\x74\x9a\x19\x33" \
+ "\x74\x2b\x30\xfd\x36\x06\x20\xd4\x4c\xa4\x35\x80" \
+ "\xea\x85\x67\xeb\x78\x1f\x08\x8c\x95\x85\xdb\x08" \
+ "\x94\xfa\xfd\x06\x50\x6b\x96\x83\xab\x6c\xd8\x31" \
+ "\x03\xc0\x20\xa1\x50\x8e\x50\x48\x92\x4a\xa5\xa8" \
+ "\xaf\x97\x8e\xf9\x7e\xe0\x06\xb8\xbc\xa8\x35\x8b" \
+ "\x88\x6e\xb8\xfb\x7b\xe2\xb6\x32\x11\x82\xbd\x9e" \
+ "\x04\x84\x9a\x6b\xc0\x3f\x1f\xb8\x3e\x0a\x57\x93" \
+ "\x78\xbc\x40\xa1\x60\x02\x7d\x58\x4d\xaf\x00\x0c" \
+ "\x01\x06\x90\x07\x7f\x23\xa1\x65\x9d\xf4\xfc\xd8" \
+ "\xcf\x6c\x93\x5d\xc0\xd7\x58\xcd\xc9\x70\xc6\xbb" \
+ "\x25\x2d\xc9\x56\xf6\x28\x82\xa7\xa6\x6e\x05\xbd" \
+ "\xee\x49\x70\x55\x62\xed\x7b\xd6\x46\x06\x48\x03" \
+ "\x59\xea\xea\x04\xb3\x66\xb9\xf0\xfb\xb3\xa5\xad" \
+ "\xb1\xae\x69\xcb\x16\x39\x50\x15\x3c\xe1\xcb\x0c" \
+ "\x74\x50\xb6\x26\x8e\xe7\xe0\x05\x7e\xb6\x09\xc8" \
+ "\xdb\x08\x9c\x6a\x23\x88\xe0\xb3\xca\xa5\x78\xaa" \
+ "\xd6\x4c\x05\xdf\x5c\xdb\x59\x8e\xa2\xf8\xac\xdf" \
+ "\x19\x20\x85\xae\x67\x46\x09\xee\xb4\x07\xc0\xe5" \
+ "\x46\x0f\xf6\x30\xd4\x9d\x45\xbb\x4a\xc3\xe5\x34" \
+ "\x87\xce\xf4\x73\x13\x47\x87\x2c\xe5\xd5\x94\xec" \
+ "\x73\xf9\xa8\x88\xac\x17\xe0\xbb\xcf\x4e\x7d\xaf" \
+ "\x0d\xa7\xdd\xcb\x91\x23\x97\x58\xb9\xf2\x24\x8b" \
+ "\x17\xff\xce\xfe\xfd\xe7\xc7\xb8\xb7\xcf\x82\xaf" \
+ "\x86\xc8\x7a\xd0\xfc\x94\xed\x6c\xe4\x1d\x46\x94" \
+ "\xa5\x0a\x8e\x7e\xdf\x06\xe5\x4b\xa2\xa0\x85\x47" \
+ "\xa4\x3e\xed\x40\x8a\x2d\x5b\xfe\xa2\xb7\x37\x8b" \
+ "\x61\x18\x74\x74\xdc\x64\xed\x5a\x93\xf2\xf2\xe1" \
+ "\xf9\xe1\x6c\xa5\x41\x31\x51\xbd\x06\xd2\x30\x90" \
+ "\x67\x68\x68\x0a\x72\xf2\x48\x17\xe7\x8a\x59\x70" \
+ "\x01\x28\x82\xb7\xf4\x29\x10\x6e\xd1\x40\x0f\x00" \
+ "\x3d\x36\xb7\xd1\xaa\x54\x92\x4e\x0f\x92\x4a\x99" \
+ "\x14\x0a\x05\x4c\xd3\x44\xca\x82\xbd\xad\x05\xc0" \
+ "\xb4\xe1\xb0\xdd\x3a\xe1\x16\x85\x1b\x3f\x99\xcc" \
+ "\x1d\x62\x27\xf0\x83\xad\x85\x21\x35\xd9\xca\x66" \
+ "\x45\xb0\x23\xbe\x1d\xbc\xd3\x03\xa0\x0a\xc7\xca" \
+ "\x8b\xc2\x73\x0a\x30\x43\x28\x64\x70\xf8\xb0\x41" \
+ "\x3e\x9f\x67\xfd\xfa\x21\x36\x6e\xcc\x95\xc4\x79" \
+ "\x3b\x72\x20\x0c\x14\x4d\xa2\x47\x4c\x32\xc7\x88" \
+ "\x35\x57\xd3\x7b\xe8\x12\x49\x60\x48\x9c\x6c\xe3" \
+ "\x62\xa0\x89\xda\xe9\xef\x02\x54\x80\x70\x61\x95" \
+ "\xab\x13\xd2\xbe\x9a\xa5\x2c\x0c\xc3\x1c\x61\x63" \
+ "\xaf\x5e\xde\x0a\x69\x65\xe4\xfc\x2e\xb8\x7e\x8a" \
+ "\xab\x0b\xda\x59\x08\x5c\x73\x09\xa8\x55\xfd\x90" \
+ "\x3a\x0d\x42\x29\xa6\x4d\x80\x28\xf6\x0c\x67\xef" \
+ "\xb0\xab\x47\xca\x92\x2d\x4b\x29\x77\xfe\x3f\x32" \
+ "\xf8\xf0\xfd\xaa\x1f\xdc\x0a\x51\xac\xaf\xe8\x3e" \
+ "\x57\xb6\xc0\xc7\x1c\x67\x5b\xff\x71\x10\x6a\x16" \
+ "\x14\xb5\x14\x5c\x38\x89\x38\x8e\x70\xd2\x49\xa4" \
+ "\x08\x21\x6e\x09\x84\xfd\xca\xbe\xe5\xa3\xc8\x36" \
+ "\x2f\x0c\xf2\x05\x96\xc0\x14\x01\x78\x5e\x6b\xe2" \
+ "\xa1\x2a\x37\x0f\x18\x26\x2e\x53\x4e\xfe\x98\x35" \
+ "\x9e\x71\xba\x8f\x2b\x9f\x5f\xe4\x12\x70\x03\xe8" \
+ "\x16\x36\x13\x37\x56\xaf\xd6\xb8\x87\x73\xde\x38" \
+ "\x87\xc4\xea\xd9\x19\x20\xe7\xdc\xe8\x22\x99\x7f" \
+ "\x63\x94\x94\x2b\xfe\xeb\xe3\xf9\xdf\xde\xac\x06" \
+ "\xdf\xae\x15\xd7\x56\x00\x00\x00\x00\x49\x45\x4e" \
+ "\x44\xae\x42\x60\x82"
+image2_data = [
+"100 100 2165 2",
+"cQ c #000000",
+"d8 c #000002",
+"da c #000004",
+"es c #000005",
+"dF c #000007",
+"d7 c #000008",
+"b7 c #000009",
+"d6 c #00000a",
+"dJ c #00000b",
+"dI c #00000c",
+"ew c #00000d",
+"cN c #00000e",
+"ev c #00000f",
+"df c #000010",
+"eu c #000011",
+"dK c #000012",
+"ec c #000013",
+"d2 c #000015",
+"cR c #000100",
+"ob c #000102",
+"bj c #000103",
+"wA c #000104",
+"bi c #000105",
+"ex c #000106",
+"eE c #000108",
+"m8 c #000110",
+"ed c #000112",
+"gG c #000115",
+"aM c #000200",
+"bk c #000201",
+"hf c #000202",
+"eZ c #000203",
+"xh c #000205",
+"eF c #000207",
+"s0 c #000209",
+"C1 c #00020b",
+"kI c #00020e",
+"dL c #000213",
+"aL c #000300",
+"eX c #000302",
+"eY c #000304",
+"s. c #000308",
+"fW c #00030a",
+"ee c #00030c",
+"gF c #000312",
+"aK c #000400",
+"mB c #000402",
+"rw c #000403",
+"D4 c #000405",
+"bl c #000500",
+"aJ c #000600",
+"vd c #000604",
+"aI c #000700",
+"aH c #000800",
+"aN c #000900",
+"p4 c #000a00",
+"lP c #000b00",
+"Et c #000c00",
+"uV c #000d00",
+"fH c #010000",
+"gj c #010002",
+"Cx c #010004",
+"b3 c #010005",
+"b2 c #010006",
+"b5 c #010008",
+"vP c #010009",
+"b6 c #01000a",
+"BQ c #01000b",
+"cL c #01000c",
+"sk c #01000d",
+"eb c #01000e",
+"cM c #01000f",
+"Af c #010010",
+"fh c #010011",
+"cK c #010100",
+"dc c #010101",
+"b4 c #010103",
+"e# c #010109",
+"ea c #01010b",
+"dH c #01010d",
+"cJ c #010200",
+"hi c #010204",
+"d9 c #010206",
+"eU c #010207",
+"bg c #010300",
+"bh c #010302",
+"C0 c #010310",
+"bf c #010400",
+"be c #010500",
+"lQ c #010504",
+"fT c #010600",
+"gE c #01060c",
+"nT c #010700",
+"lY c #010800",
+"oi c #010900",
+"uz c #010a00",
+"DT c #010d00",
+"BR c #010e00",
+"ws c #011000",
+"xD c #020001",
+"gh c #020008",
+"b8 c #02000b",
+"bY c #02000d",
+"gm c #02000e",
+"de c #020010",
+"yM c #020014",
+"vo c #020100",
+"b1 c #020106",
+"b0 c #020107",
+"bZ c #020109",
+"cI c #020200",
+"db c #020202",
+"cH c #020204",
+"pA c #02020a",
+"tL c #02020c",
+"dG c #02020e",
+"c# c #020300",
+"o2 c #020305",
+"hj c #020307",
+"eV c #020308",
+"er c #020400",
+"yp c #020403",
+"CZ c #020410",
+"xU c #020413",
+"oA c #020500",
+"rK c #020600",
+"fk c #020607",
+"CL c #020609",
+"uR c #020612",
+"fj c #020700",
+"wQ c #02070a",
+"c8 c #020800",
+"vN c #020900",
+"uG c #020a00",
+"qP c #020b00",
+"wl c #020d00",
+"kG c #020e00",
+"ie c #030000",
+"iV c #030002",
+"Dy c #030004",
+"yf c #030005",
+"xH c #030007",
+"if c #030009",
+"xI c #03000b",
+"Ce c #03000e",
+"Cd c #030010",
+"mV c #030011",
+"yo c #030013",
+"iW c #030102",
+"xE c #030106",
+"q8 c #03010c",
+"dg c #03010e",
+"v8 c #03010f",
+"fe c #030200",
+"eT c #030207",
+"fi c #030208",
+"cG c #03020a",
+"hh c #030212",
+"jC c #030300",
+"et c #030301",
+"vG c #030303",
+"bW c #030305",
+"uc c #03030b",
+"hk c #03030d",
+"f2 c #03030f",
+"c9 c #030400",
+"f0 c #030406",
+"eB c #030408",
+"yc c #030409",
+"bV c #030500",
+"wt c #030502",
+"jA c #030600",
+"fV c #03060b",
+"wk c #030708",
+"nI c #03070a",
+"vC c #030710",
+"fo c #030800",
+"Cz c #030802",
+"w4 c #030804",
+"dM c #03080e",
+"pH c #030900",
+"ig c #030a00",
+"he c #030e00",
+"w9 c #040000",
+"x. c #040005",
+"vO c #04000e",
+"ye c #040108",
+"Cy c #04010a",
+"fJ c #040116",
+"DR c #040205",
+"hW c #04020d",
+"cO c #04020f",
+"yL c #040210",
+"wE c #040301",
+"d3 c #040308",
+"hZ c #040309",
+"gk c #04030b",
+"o3 c #040311",
+"xF c #040400",
+"lu c #040402",
+"fI c #040404",
+"jm c #040406",
+"gH c #04040c",
+"ud c #040410",
+"kV c #040500",
+"eW c #040507",
+"eD c #040509",
+"f1 c #04050a",
+"Bn c #040600",
+"o5 c #040603",
+"fZ c #040605",
+"px c #040700",
+"pe c #040800",
+"Dw c #040809",
+"fl c #04080b",
+"m9 c #040811",
+"EF c #040900",
+"fL c #040a00",
+"zS c #040b00",
+"CM c #040b04",
+"Cr c #040d00",
+"EL c #041000",
+"D3 c #041100",
+"kl c #041200",
+"iU c #050004",
+"w8 c #050100",
+"hx c #050102",
+"vQ c #050209",
+"gi c #05020b",
+"gV c #05020d",
+"rg c #050217",
+"Di c #050304",
+"wd c #050308",
+"bX c #05030e",
+"hv c #050310",
+"iT c #050400",
+"fG c #050402",
+"cF c #050409",
+"cP c #05040a",
+"fF c #05040c",
+"DQ c #050500",
+"j6 c #050503",
+"kh c #050505",
+"h0 c #050507",
+"vw c #05050d",
+"AF c #050511",
+"mU c #050600",
+"d5 c #050601",
+"xs c #050608",
+"eA c #05060a",
+"e. c #05060b",
+"xC c #050700",
+"uT c #050702",
+"j4 c #050704",
+"xJ c #050800",
+"t# c #050801",
+"h2 c #050900",
+"oa c #050908",
+"fn c #05090a",
+"uw c #05090c",
+"f3 c #050a00",
+"z. c #050a06",
+"oQ c #050b00",
+"pd c #050d00",
+"hA c #050e00",
+"qg c #050f00",
+"t3 c #051000",
+"DS c #06000a",
+"Dx c #060200",
+"Dj c #060201",
+"wG c #060203",
+"CI c #060211",
+"xG c #060300",
+"jD c #06030a",
+"CK c #06030c",
+"fg c #060314",
+"Dh c #060405",
+"hy c #060409",
+"dh c #06040f",
+"gl c #060411",
+"dC c #060412",
+"C2 c #060501",
+"iD c #06050a",
+"dE c #06050b",
+"n0 c #06050d",
+"tU c #060513",
+"d4 c #060604",
+"jo c #060606",
+"ki c #060608",
+"py c #06060e",
+"By c #060701",
+"wz c #060702",
+"tx c #060709",
+"eC c #06070b",
+"o4 c #06070c",
+"pz c #060803",
+"fX c #060805",
+"v3 c #060807",
+"Eq c #060900",
+"uK c #06090e",
+"fm c #060910",
+"ca c #060a00",
+"fU c #060a09",
+"fM c #060c00",
+"gn c #060d00",
+"C3 c #060d06",
+"j3 c #060f00",
+"fO c #061000",
+"zx c #061400",
+"n. c #061500",
+"id c #070300",
+"CJ c #070311",
+"sN c #070415",
+"fK c #070417",
+"wF c #070508",
+"kU c #070510",
+"n1 c #070512",
+"dd c #070513",
+"iS c #070601",
+"fd c #070602",
+"ns c #07060b",
+"b9 c #07060c",
+"fE c #07060e",
+"d. c #070705",
+"wH c #070707",
+"d# c #070709",
+"ty c #07070f",
+"h1 c #070800",
+"jB c #070802",
+"o7 c #07080c",
+"nJ c #07081a",
+"fY c #070906",
+"o6 c #070908",
+"Cq c #070a00",
+"qu c #070c00",
+"vX c #070c08",
+"B# c #070d01",
+"fN c #070e00",
+"Es c #070f02",
+"B1 c #071000",
+"Ae c #071100",
+"u8 c #071400",
+"nt c #080516",
+"dD c #080611",
+"zf c #080613",
+"kj c #08070c",
+"di c #08070d",
+"yg c #08070f",
+"yd c #080717",
+"ni c #080806",
+"c. c #080808",
+"qe c #08080a",
+"hz c #080904",
+"z1 c #08090b",
+"dj c #08090d",
+"wP c #08090e",
+"vD c #080a05",
+"ve c #080a09",
+"nK c #080a17",
+"uy c #080b00",
+"kH c #080b12",
+"y9 c #080d09",
+"gW c #080f00",
+"rm c #081000",
+"rf c #081200",
+"lg c #081300",
+"cS c #081500",
+"hX c #090712",
+"qp c #090715",
+"qE c #09080d",
+"lt c #09080e",
+"hY c #090810",
+"ux c #090907",
+"ff c #090909",
+"ey c #090a0e",
+"uS c #090a1c",
+"Dv c #090b06",
+"Ap c #090c11",
+"qX c #090e00",
+"nL c #090e0a",
+"kW c #091000",
+"pV c #091100",
+"ic c #091300",
+"z2 c #091400",
+"vp c #091500",
+"xr c #091600",
+"aO c #091700",
+"qQ c #0a0718",
+"q7 c #0a090f",
+"j5 c #0a0a0a",
+"jn c #0a0a0c",
+"ez c #0a0b0f",
+"u9 c #0a0b10",
+"sO c #0a0c00",
+"iE c #0a0c01",
+"ta c #0a0c0b",
+"v9 c #0a0f08",
+"v2 c #0a0f0b",
+"wu c #0a1000",
+"ls c #0a1100",
+"Ed c #0a110a",
+"d1 c #0a1300",
+"Ee c #0a1400",
+"m7 c #0a1700",
+"uQ c #0a1900",
+"hw c #0b0704",
+"uU c #0b0917",
+"tz c #0b0a0f",
+"qf c #0b0b0b",
+"CY c #0b0c07",
+"pW c #0b0d0c",
+"vF c #0b0e00",
+"xV c #0b0e17",
+"dk c #0b0f12",
+"BP c #0b1000",
+"q6 c #0b1009",
+"bU c #0b1100",
+"Ep c #0b1200",
+"Cs c #0b1400",
+"EX c #0b1700",
+"aG c #0b1800",
+"vH c #0b1900",
+"sl c #0c091c",
+"yn c #0c0c0a",
+"cE c #0c1300",
+"tA c #0c1400",
+"mC c #0c1900",
+"m. c #0c1a00",
+"vg c #0c1b00",
+"iF c #0d1200",
+"y8 c #0d120c",
+"v4 c #0d1400",
+"rV c #0d1500",
+"hV c #0d1900",
+"v. c #0d1b00",
+"qD c #0d1c00",
+"rW c #0e0d13",
+"vf c #0e0e10",
+"hg c #0e101c",
+"Du c #0e1300",
+"rF c #0e1800",
+"tw c #0e1900",
+"rv c #0e1b00",
+"qd c #0e1c00",
+"o# c #0f1a00",
+"mA c #0f1b00",
+"gD c #0f1d00",
+"A2 c #101010",
+"vE c #101300",
+"sm c #101302",
+"Eb c #101600",
+"nr c #101700",
+"oz c #101900",
+"nH c #101b00",
+"fS c #101c00",
+"dN c #101f00",
+"iX c #110e15",
+"kk c #110e17",
+"lR c #111700",
+"Ct c #111a00",
+"wO c #111b00",
+"bm c #111c00",
+"uv c #111d00",
+"r9 c #111e00",
+"ef c #111f00",
+"pX c #112100",
+"jl c #121700",
+"bd c #121900",
+"cb c #121a00",
+"jp c #121b00",
+"fp c #121c00",
+"vn c #121d00",
+"rL c #121f00",
+"fP c #122000",
+"C4 c #122500",
+"xB c #131900",
+"ue c #131a00",
+"AN c #131b00",
+"pl c #131c00",
+"Cw c #131f00",
+"yy c #132300",
+"v7 c #141a00",
+"w3 c #141c00",
+"go c #141d00",
+"iC c #142100",
+"yz c #142400",
+"Bo c #151b00",
+"pw c #151d00",
+"tV c #151e00",
+"o1 c #151f00",
+"dB c #152000",
+"Cu c #152100",
+"sd c #152300",
+"fQ c #152400",
+"sj c #161e00",
+"iR c #162000",
+"tl c #162200",
+"sZ c #162300",
+"ah c #162400",
+"E7 c #162900",
+"nU c #171e00",
+"s6 c #172300",
+"fR c #172400",
+"ai c #172500",
+"ag c #172600",
+"o8 c #172700",
+"x# c #182100",
+"sM c #182200",
+"sD c #182600",
+"q9 c #192000",
+"qF c #192100",
+"s1 c #192200",
+"B2 c #192500",
+"nM c #192700",
+"sz c #1a2300",
+"Cv c #1a2600",
+"wW c #1b2200",
+"AE c #1b2203",
+"Ff c #1b2500",
+"eS c #1b2600",
+"mL c #1b2900",
+"af c #1b2b00",
+"xt c #1c2400",
+"s# c #1c2600",
+"gg c #1c2700",
+"AO c #1c2900",
+"aj c #1c2a00",
+"s5 c #1d2b00",
+"cc c #1d2d00",
+"fD c #1e2800",
+"fc c #1e2900",
+"w5 c #1f250b",
+"EG c #1f2800",
+"A3 c #202705",
+"ih c #202b00",
+"u2 c #202d00",
+"EM c #202f00",
+"DU c #203000",
+"CX c #212b00",
+"rG c #212c00",
+"gI c #212e00",
+"ms c #222d00",
+"vR c #223000",
+"vv c #223100",
+"BO c #232c00",
+"uL c #233300",
+"vc c #233800",
+"wc c #242e00",
+"pf c #243000",
+"aF c #243200",
+"oP c #243300",
+"aP c #243400",
+"tM c #252f00",
+"ak c #253300",
+"gC c #253500",
+"to c #263401",
+"lF c #263b00",
+"CH c #272f00",
+"gX c #273100",
+"f4 c #273200",
+"cT c #273700",
+"lX c #283200",
+"bT c #283300",
+"p3 c #283500",
+"EY c #283600",
+"Dz c #283a00",
+"gp c #293400",
+"e0 c #293700",
+"ae c #293a00",
+"eg c #293b00",
+"pB c #294100",
+"ze c #2a3400",
+"eq c #2a3600",
+"B. c #2a3700",
+"w7 c #2b3206",
+"Bm c #2b3209",
+"Fe c #2c3800",
+"rh c #2c3900",
+"nS c #2c3b00",
+"yW c #2c4300",
+"B0 c #2d3700",
+"Eo c #2d3800",
+"Ba c #2d3b00",
+"zy c #2d3d00",
+"hd c #2e3d06",
+"Bz c #2f3a00",
+"Dg c #2f3b00",
+"hl c #2f3d00",
+"eG c #314000",
+"kT c #323b02",
+"al c #324108",
+"tQ c #32410a",
+"t4 c #333e04",
+"cD c #343d04",
+"Bx c #343f00",
+"lh c #353d0a",
+"yq c #354100",
+"oH c #354200",
+"hU c #35430e",
+"D2 c #354800",
+"jz c #364200",
+"yG c #364502",
+"j7 c #364900",
+"Ea c #373f0c",
+"nu c #374300",
+"c7 c #374400",
+"wR c #374514",
+"mj c #374708",
+"lZ c #384205",
+"aE c #384800",
+"oo c #384900",
+"hB c #394500",
+"jk c #394507",
+"Aq c #39490b",
+"Ef c #394c00",
+"mT c #3a440f",
+"Dt c #3a4503",
+"Ag c #3a4c00",
+"h3 c #3b4506",
+"iY c #3b4508",
+"bc c #3b4510",
+"dl c #3b4d03",
+"bn c #3e4a08",
+"xg c #3e4a0c",
+"qR c #3e4c00",
+"am c #3e4e0d",
+"t9 c #3e4e10",
+"ad c #3e4f08",
+"Dk c #3e5600",
+"EE c #3f490c",
+"z0 c #3f4a08",
+"qo c #404f00",
+"Fl c #405800",
+"nj c #414b0e",
+"un c #414d0d",
+"aQ c #425500",
+"xK c #434d10",
+"hu c #435104",
+"B3 c #435200",
+"we c #435400",
+"lO c #445416",
+"EH c #454f12",
+"p9 c #455107",
+"gq c #455200",
+"z3 c #455517",
+"us c #45560f",
+"vW c #455701",
+"d0 c #46530d",
+"an c #46580c",
+"jE c #475315",
+"EZ c #475800",
+"lv c #495517",
+"yN c #495610",
+"uH c #4a580d",
+"j2 c #4b5813",
+"pc c #4c5a0f",
+"gY c #4d5a0a",
+"oR c #4d5a0b",
+"xi c #4d6011",
+"BN c #4f5c0d",
+"iB c #4f6210",
+"Cc c #506210",
+"DP c #525f1a",
+"vM c #52600b",
+"BA c #526011",
+"ac c #526514",
+"o9 c #526b05",
+"iG c #535f1d",
+"kg c #536011",
+"qq c #53620d",
+"kJ c #536211",
+"w6 c #545c2d",
+"zE c #54651e",
+"uF c #556713",
+"dO c #556817",
+"cC c #566314",
+"E# c #566415",
+"lf c #566720",
+"yV c #566e0c",
+"ib c #576613",
+"lG c #576d08",
+"yX c #576f0d",
+"AM c #586513",
+"dA c #586617",
+"ii c #58670a",
+"vB c #586e09",
+"A1 c #596132",
+"m6 c #596c1d",
+"z# c #596e0f",
+"cd c #597015",
+"mW c #5a690c",
+"tT c #5a6d1e",
+"lr c #5b6911",
+"zg c #5b6c1c",
+"Cf c #5b6d23",
+"qC c #5b6f18",
+"bS c #5c6b10",
+"x3 c #5c6e1c",
+"EK c #5c6e22",
+"yx c #5c6f1d",
+"uP c #5c720d",
+"pY c #5c750f",
+"lS c #5d6b13",
+"AP c #5d6e1e",
+"nh c #5d6f1b",
+"oc c #5d6f1d",
+"gB c #5d6f23",
+"oB c #5d711c",
+"cU c #5d7217",
+"lE c #5d730e",
+"En c #5e6c14",
+"hc c #5e7024",
+"vI c #5e7115",
+"kX c #5e7117",
+"Ec c #5e711f",
+"C5 c #5e7702",
+"yK c #5f6e13",
+"EI c #5f6e1d",
+"qO c #5f7014",
+"kF c #5f711f",
+"vx c #5f7125",
+"km c #5f7218",
+"mD c #5f7220",
+"m# c #5f7221",
+"Cb c #5f7314",
+"vh c #5f7419",
+"yb c #606d25",
+"qG c #606e1f",
+"uf c #606e21",
+"o0 c #606f1c",
+"wr c #607321",
+"Fk c #607904",
+"rx c #616d23",
+"zD c #616f1a",
+"x4 c #616f20",
+"si c #61701d",
+"tv c #617128",
+"B4 c #617216",
+"wV c #61751c",
+"uW c #617619",
+"sP c #626a3b",
+"oy c #62711e",
+"yh c #627120",
+"nG c #627229",
+"mz c #62732c",
+"w. c #62741e",
+"n# c #62761d",
+"wX c #636f27",
+"tW c #637021",
+"pv c #63702a",
+"sL c #63721f",
+"tB c #64711f",
+"fq c #64731e",
+"ub c #64752e",
+"Ad c #64771e",
+"y7 c #647725",
+"um c #647819",
+"v6 c #656d3e",
+"sn c #656e37",
+"v5 c #656e39",
+"xA c #657125",
+"tb c #657127",
+"w2 c #657222",
+"rU c #65722d",
+"gr c #65731b",
+"hT c #65772d",
+"l9 c #657827",
+"qv c #667321",
+"fb c #66771b",
+"wm c #667730",
+"nN c #667822",
+"ab c #667a21",
+"CN c #667b1c",
+"qc c #667b1e",
+"q5 c #667b20",
+"bo c #677925",
+"E6 c #677c1d",
+"wy c #68742a",
+"AD c #687432",
+"hC c #68771a",
+"E0 c #687b12",
+"uu c #687b2a",
+"aR c #687e12",
+"xT c #697728",
+"xq c #697b25",
+"gA c #697d26",
+"zT c #697e1f",
+"qh c #697e21",
+"wv c #6a7727",
+"n2 c #6a791c",
+"t. c #6a7b2b",
+"wI c #6a7d14",
+"ru c #6a7d24",
+"yA c #6a7f24",
+"wB c #6b7737",
+"EW c #6b7a29",
+"p5 c #6b7c1c",
+"pU c #6b7e22",
+"wj c #6b801b",
+"Bl c #6c7732",
+"r. c #6c782c",
+"o. c #6c7d2d",
+"ao c #6c8027",
+"xu c #6d792d",
+"wD c #6d792f",
+"rX c #6d7b24",
+"f5 c #6d7f1c",
+"uJ c #6d812c",
+"ED c #6e7b29",
+"CW c #6e7d22",
+"eH c #6e8221",
+"fC c #6e8223",
+"eR c #6f8320",
+"bb c #707e2f",
+"mr c #707e31",
+"dm c #708624",
+"oj c #71802f",
+"oh c #71832f",
+"yF c #71852c",
+"uA c #718725",
+"BZ c #728220",
+"Bb c #728430",
+"mM c #73802e",
+"aD c #73862d",
+"Ao c #748328",
+"u3 c #74832e",
+"e1 c #75882e",
+"Bp c #778933",
+"Ca c #778c25",
+"DA c #78911c",
+"gJ c #798c23",
+"Cp c #7a8831",
+"iQ c #7a8b2d",
+"Df c #7b8c26",
+"c6 c #7b8c2c",
+"D1 c #7b921e",
+"t2 c #7c912a",
+"gz c #7c9132",
+"u7 c #7c922e",
+"jq c #7c931f",
+"ep c #7d8e30",
+"mK c #7d9331",
+"Ar c #7e9334",
+"aa c #7e9430",
+"Ds c #7f9026",
+"vb c #7fa00b",
+"B5 c #809133",
+"pG c #809135",
+"hm c #80932a",
+"E8 c #809634",
+"ap c #80972f",
+"mt c #81912f",
+"re c #819330",
+"hb c #819637",
+"gU c #81972a",
+"k8 c #81a20d",
+"pm c #829132",
+"gZ c #829230",
+"gs c #839235",
+"iZ c #839330",
+"BB c #839532",
+"qY c #84923b",
+"dZ c #849932",
+"v# c #849a38",
+"EV c #859638",
+"BM c #859733",
+"pI c #85982d",
+"vm c #85982f",
+"zo c #859f22",
+"vq c #869834",
+"pC c #86a120",
+"Fg c #879935",
+"nV c #88993d",
+"eh c #89a034",
+"Eg c #89a036",
+"aC c #8a9f38",
+"zz c #8aa32b",
+"E1 c #8ba02b",
+"Bw c #8c9e2e",
+"nq c #8ca138",
+"EN c #8da33e",
+"wN c #8da432",
+"D5 c #8da43c",
+"AQ c #8ea33a",
+"C# c #8ea435",
+"gy c #8ea43f",
+"xa c #8fa42f",
+"AG c #8fa43f",
+"nR c #8fa539",
+"ij c #90a32f",
+"hS c #90a642",
+"vY c #90a644",
+"aS c #90a82e",
+"nv c #91a430",
+"Em c #92a339",
+"wS c #92a74a",
+"yH c #92a839",
+"zh c #92aa3c",
+"kY c #92ac2d",
+"mI c #92b501",
+"l0 c #93a446",
+"mi c #93a849",
+"tK c #93a93a",
+"iA c #93a947",
+"vu c #93ab39",
+"ha c #93ab3b",
+"Ah c #93ae2b",
+"zj c #93b600",
+"au c #93b602",
+"cr c #93b809",
+"li c #94a53b",
+"gt c #94a640",
+"z4 c #94a94c",
+"j8 c #94ad2d",
+"p. c #94b125",
+"jI c #94b204",
+"bN c #94b504",
+"mG c #94b50e",
+"xR c #94b607",
+"fx c #94b701",
+"sW c #94b909",
+"Ax c #94bb00",
+"B6 c #95a741",
+"le c #95ad3d",
+"cV c #95ae39",
+"zn c #95b129",
+"i. c #95b607",
+"xZ c #95bb06",
+"rn c #96a747",
+"EC c #96a83c",
+"uM c #96ae3e",
+"jj c #96ae40",
+"aq c #96af37",
+"pZ c #96b130",
+"oE c #96b907",
+"dP c #97ae42",
+"a# c #97af41",
+"zp c #97b134",
+"y6 c #97b33a",
+"nm c #97b40c",
+"uB c #97b531",
+"yj c #97b70e",
+"hp c #97b805",
+"x0 c #97b811",
+"dW c #97b903",
+"sI c #97ba06",
+"k5 c #97bc0c",
+"lb c #97bd08",
+"ss c #97bd10",
+"y1 c #97bd12",
+"bR c #98aa3a",
+"rE c #98ab40",
+"xW c #98b040",
+"yY c #98b43b",
+"Fs c #98b50b",
+"Dl c #98b620",
+"FB c #98b71c",
+"xn c #98b817",
+"a8 c #98ba03",
+"fy c #98ba0c",
+"wp c #98bb17",
+"z7 c #98bc00",
+"rB c #98bd0b",
+"bC c #98bd0e",
+"t0 c #98be06",
+"zN c #98be07",
+"tF c #98bf00",
+"zt c #98bf04",
+"sv c #98bf0c",
+"y3 c #98c007",
+"z9 c #98c105",
+"tE c #98c200",
+"jF c #99aa4c",
+"A9 c #99ab3b",
+"ht c #99ad3c",
+"j1 c #99ae47",
+"B7 c #99b03b",
+"yE c #99b23a",
+"ug c #99b431",
+"ce c #99b441",
+"nx c #99b707",
+"FC c #99b721",
+"Dp c #99b800",
+"DD c #99b805",
+"uY c #99b812",
+"ft c #99b900",
+"Fi c #99b910",
+"h7 c #99b916",
+"EJ c #99b918",
+"Bq c #99b91a",
+"ql c #99ba07",
+"f. c #99ba09",
+"f8 c #99bb02",
+"a5 c #99bb04",
+"zH c #99bb0c",
+"bJ c #99bb0d",
+".X c #99bc06",
+"#o c #99bc08",
+"l# c #99bc18",
+"sg c #99bd01",
+"rk c #99bd03",
+"kA c #99be0c",
+"zO c #99be0e",
+"ti c #99be0f",
+"bt c #99bf08",
+"jY c #99bf0a",
+"tf c #99c202",
+"zZ c #9aac40",
+"dz c #9aad42",
+"jy c #9aae3f",
+"yr c #9aaf46",
+"rM c #9ab043",
+"gu c #9ab13f",
+"gx c #9ab145",
+"E. c #9ab334",
+"vK c #9ab41d",
+"sR c #9ab510",
+"xx c #9ab60c",
+"Ft c #9ab70f",
+"C6 c #9ab91e",
+"#b c #9aba17",
+"iJ c #9aba19",
+"#v c #9aba1b",
+"cZ c #9abb14",
+"qL c #9abc05",
+"tr c #9abc0d",
+"r6 c #9abc0e",
+".W c #9abd07",
+"#p c #9abd09",
+"z6 c #9abd0b",
+"lo c #9abe02",
+"qV c #9abe04",
+"ps c #9abe06",
+"Aj c #9abf00",
+"sV c #9abf0d",
+"ch c #9abf0f",
+"k6 c #9abf10",
+"Ay c #9ac008",
+"sF c #9ac00b",
+"r1 c #9ac013",
+"k3 c #9ac102",
+"sf c #9ac104",
+"A. c #9ac106",
+"y2 c #9ac10c",
+"sw c #9ac10e",
+"sT c #9ac20a",
+"Aw c #9ac305",
+"mk c #9bad41",
+"sC c #9bb43c",
+"C. c #9bb43e",
+"#T c #9bb538",
+"nX c #9bb810",
+"qi c #9bb83a",
+"EP c #9bb909",
+"Aa c #9bba14",
+"jt c #9bba1e",
+"mc c #9bbb1a",
+"qk c #9bbb1c",
+"ts c #9bbc17",
+"u0 c #9bbd04",
+"uj c #9bbd06",
+"#z c #9bbd0e",
+"lJ c #9bbd0f",
+"jw c #9bbe02",
+"#n c #9bbe08",
+"hM c #9bbe0a",
+"m2 c #9bbf07",
+"nc c #9bbf13",
+"wi c #9bc001",
+"kB c #9bc00e",
+"sX c #9bc011",
+"AX c #9bc109",
+"k4 c #9bc10c",
+"y0 c #9bc207",
+"cB c #9cb03f",
+"se c #9cb442",
+"s4 c #9cb53d",
+"dn c #9cb53f",
+"gv c #9cb540",
+"#S c #9cb637",
+"B8 c #9cb639",
+"sc c #9cb63b",
+"xc c #9cba0c",
+"DE c #9cba0d",
+"ay c #9cbc13",
+"ur c #9cbc1b",
+"Ex c #9cbc1d",
+"dw c #9cbd0a",
+"cx c #9cbd0e",
+".6 c #9cbd14",
+"uq c #9cbd16",
+"l6 c #9cbd18",
+"AV c #9cbe05",
+"lB c #9cbe0f",
+"xm c #9cbe10",
+"cY c #9cbe12",
+"#A c #9cbf09",
+"#. c #9cbf0b",
+"k1 c #9cbf0d",
+"jf c #9cbf1a",
+"m3 c #9cc006",
+"#i c #9cc008",
+"nP c #9cc016",
+"bs c #9cc018",
+"kQ c #9cc101",
+"ci c #9cc10f",
+"wo c #9cc111",
+"u# c #9cc112",
+"bw c #9cc20a",
+"jX c #9cc20d",
+"ky c #9cc308",
+"s2 c #9db044",
+"qx c #9db715",
+"#U c #9db73c",
+"hI c #9db813",
+"oF c #9db829",
+"#R c #9db837",
+"y. c #9dba10",
+"te c #9dba12",
+"EQ c #9dbb0b",
+"Ey c #9dbb1f",
+"DL c #9dbd02",
+"vk c #9dbd10",
+"eK c #9dbd12",
+"Ew c #9dbd1c",
+"#u c #9dbd1e",
+"gP c #9dbe0f",
+"#y c #9dbe15",
+"pR c #9dbe17",
+".3 c #9dbe19",
+"hN c #9dbf10",
+".7 c #9dbf13",
+".V c #9dc00a",
+".S c #9dc00c",
+"#h c #9dc00e",
+"ne c #9dc105",
+"nz c #9dc107",
+"m0 c #9dc109",
+"lL c #9dc117",
+"cn c #9dc119",
+"jW c #9dc210",
+"bD c #9dc212",
+"lK c #9dc30b",
+"zr c #9dc314",
+"st c #9dc316",
+"yu c #9dc405",
+"Fv c #9eb145",
+"ba c #9eb146",
+"pg c #9eb23f",
+"Fw c #9eb243",
+"A4 c #9eb34e",
+"AC c #9eb448",
+"gw c #9eb646",
+"AR c #9eb738",
+"rl c #9eb839",
+"rJ c #9eb83b",
+"#Q c #9eb936",
+"C8 c #9ebb11",
+"wK c #9ebb15",
+"zX c #9ebc0c",
+"cy c #9ebd19",
+"c3 c #9ebd1a",
+"ji c #9ebd33",
+"A5 c #9ebe05",
+"Bf c #9ebe11",
+"lp c #9ebe13",
+"uk c #9ebe15",
+"t7 c #9ebe1f",
+"k9 c #9ebe2c",
+"jK c #9ebf00",
+"bM c #9ebf0e",
+"hq c #9ebf10",
+".5 c #9ebf16",
+"m4 c #9ebf18",
+"h8 c #9ebf1a",
+"eL c #9ec009",
+"ax c #9ec00a",
+"#g c #9ec011",
+"mQ c #9ec012",
+".s c #9ec014",
+"dv c #9ec105",
+"e8 c #9ec10b",
+".C c #9ec10d",
+".P c #9ec10f",
+"#8 c #9ec206",
+"xP c #9ec208",
+"fv c #9ec20a",
+"yQ c #9ec218",
+"by c #9ec21a",
+"pQ c #9ec303",
+"kw c #9ec311",
+"lc c #9ec314",
+"oX c #9ec400",
+"i9 c #9ec40d",
+"yT c #9ec506",
+"me c #9ec508",
+"nd c #9ec50a",
+"zs c #9ec60d",
+"tg c #9ec70b",
+"zd c #9fb141",
+"DO c #9fb14e",
+"vS c #9fb340",
+"s9 c #9fb546",
+"zF c #9fb551",
+"r8 c #9fb73f",
+"og c #9fb839",
+"rI c #9fb920",
+"AY c #9fb922",
+"B9 c #9fb93e",
+"jH c #9fba1f",
+"Bt c #9fbb0e",
+"qT c #9fbb19",
+"Fu c #9fbc14",
+"a9 c #9fbd10",
+"k. c #9fbd21",
+"DH c #9fbe08",
+"gS c #9fbe18",
+"k# c #9fbe1a",
+"iy c #9fbe23",
+"xj c #9fbe32",
+"x9 c #9fbf04",
+"jv c #9fbf1e",
+"dp c #9fbf20",
+"vA c #9fbf2d",
+"gR c #9fc00f",
+"hO c #9fc017",
+".4 c #9fc019",
+".2 c #9fc01b",
+"yP c #9fc029",
+"AU c #9fc10b",
+".F c #9fc112",
+".Y c #9fc113",
+".r c #9fc115",
+"jg c #9fc124",
+"eN c #9fc203",
+"rb c #9fc206",
+".T c #9fc20c",
+"nA c #9fc20e",
+".A c #9fc210",
+"uD c #9fc21d",
+"zP c #9fc21e",
+"e6 c #9fc300",
+"mw c #9fc307",
+"oN c #9fc30b",
+"yC c #9fc317",
+"bB c #9fc319",
+"tj c #9fc31b",
+"pp c #9fc402",
+"zk c #9fc404",
+"#5 c #9fc405",
+"cj c #9fc412",
+"jV c #9fc414",
+"je c #9fc415",
+"oW c #9fc500",
+"jS c #9fc50d",
+"jc c #9fc50e",
+"r4 c #9fc510",
+"ks c #9fc60b",
+"bH c #9fc611",
+"bI c #9fc615",
+"aZ c #9fc70e",
+"c0 c #9fc70f",
+"bG c #9fc808",
+"aY c #9fc80a",
+"ct c #9fc80c",
+"sA c #a0b445",
+"nF c #a0b647",
+"lN c #a0b652",
+"sK c #a0b742",
+"lw c #a0b745",
+"bp c #a0b74b",
+"q# c #a0b91d",
+"rz c #a0b927",
+"tk c #a0b943",
+"lH c #a0b944",
+"hH c #a0ba1b",
+"FO c #a0ba21",
+"yB c #a0ba3f",
+"CT c #a0bd0d",
+"qs c #a0bd13",
+"Fa c #a0bd17",
+"kM c #a0be0e",
+"n8 c #a0be20",
+"AH c #a0be2a",
+"Fo c #a0bf0a",
+"lV c #a0bf0c",
+"AA c #a0bf19",
+"p0 c #a0bf24",
+"vz c #a0bf26",
+"h6 c #a0c01d",
+"DW c #a0c01f",
+"ju c #a0c021",
+"or c #a0c100",
+"jL c #a0c102",
+"a4 c #a0c10e",
+"rq c #a0c112",
+"#q c #a0c118",
+"#a c #a0c11a",
+"#x c #a0c11c",
+"ld c #a0c128",
+"yv c #a0c12c",
+"e9 c #a0c209",
+"kR c #a0c20c",
+".z c #a0c213",
+".G c #a0c214",
+".K c #a0c216",
+".U c #a0c30d",
+".E c #a0c30f",
+".n c #a0c311",
+"bz c #a0c31e",
+"e5 c #a0c402",
+"iu c #a0c408",
+"xd c #a0c40a",
+"#m c #a0c40c",
+"a2 c #a0c418",
+"cm c #a0c41c",
+"#7 c #a0c505",
+"ke c #a0c506",
+"cu c #a0c513",
+"a1 c #a0c515",
+"el c #a0c516",
+"zV c #a0c601",
+"cs c #a0c60e",
+"av c #a0c60f",
+"a0 c #a0c611",
+"su c #a0c617",
+"r2 c #a0c619",
+"yt c #a0c708",
+"bF c #a0c70a",
+"aX c #a0c70c",
+"zK c #a0c712",
+"h4 c #a1b252",
+"hD c #a1b345",
+"Bk c #a1b34d",
+"wb c #a1b449",
+"AL c #a1b53c",
+"Fh c #a1b542",
+"tN c #a1b546",
+"w# c #a1b64d",
+"Bu c #a1bb19",
+"rZ c #a1bb1a",
+"up c #a1bb22",
+"#V c #a1bb40",
+"A7 c #a1bc17",
+"FP c #a1bc1f",
+"yU c #a1bc47",
+"D# c #a1bd11",
+"Am c #a1bd13",
+"zB c #a1bd1b",
+"Db c #a1be0a",
+"vU c #a1be18",
+"DY c #a1be26",
+"qz c #a1bf11",
+"kf c #a1bf12",
+"oO c #a1bf29",
+"sS c #a1c00a",
+"FH c #a1c00d",
+"hr c #a1c01c",
+"on c #a1c025",
+"#K c #a1c027",
+"rC c #a1c114",
+"#c c #a1c11e",
+"#w c #a1c120",
+"#t c #a1c122",
+"oL c #a1c20f",
+"qU c #a1c211",
+"rj c #a1c213",
+".t c #a1c219",
+"p7 c #a1c21b",
+"q2 c #a1c21d",
+"oe c #a1c22d",
+"pi c #a1c30a",
+"oK c #a1c30c",
+"pj c #a1c30d",
+"## c #a1c314",
+"no c #a1c315",
+".M c #a1c317",
+"nC c #a1c405",
+"rQ c #a1c406",
+".9 c #a1c40e",
+".R c #a1c410",
+".m c #a1c412",
+"#B c #a1c509",
+"#j c #a1c50b",
+"dr c #a1c50d",
+"oM c #a1c519",
+"tq c #a1c606",
+"iv c #a1c607",
+"jT c #a1c614",
+"jU c #a1c616",
+"cq c #a1c617",
+"E3 c #a1c702",
+"rA c #a1c710",
+"j. c #a1c712",
+"kt c #a1c80b",
+"tG c #a1c80d",
+"wY c #a2b63d",
+"sa c #a2b647",
+"kn c #a2b849",
+"n9 c #a2b944",
+"e2 c #a2ba40",
+"vi c #a2bb43",
+"na c #a2bb45",
+"sb c #a2bc23",
+"sy c #a2bc3f",
+"lD c #a2bc41",
+"q0 c #a2bd16",
+"mY c #a2bd22",
+"BW c #a2be11",
+"hJ c #a2be14",
+"xM c #a2be1b",
+"vs c #a2be1c",
+"AS c #a2be2d",
+"AJ c #a2bf0d",
+"ol c #a2bf17",
+"pk c #a2bf2f",
+"i8 c #a2c010",
+"jP c #a2c013",
+"AT c #a2c022",
+"#L c #a2c02e",
+"mo c #a2c10e",
+"Bd c #a2c11e",
+"D7 c #a2c125",
+"aV c #a2c126",
+"lk c #a2c207",
+"gb c #a2c215",
+"aW c #a2c21f",
+"r7 c #a2c221",
+"tn c #a2c223",
+"DI c #a2c300",
+"oV c #a2c304",
+"bK c #a2c312",
+"jR c #a2c314",
+".h c #a2c31a",
+"iL c #a2c31c",
+"iK c #a2c31e",
+"it c #a2c40b",
+".# c #a2c415",
+".a c #a2c416",
+".b c #a2c418",
+"eM c #a2c507",
+"rP c #a2c509",
+".c c #a2c50f",
+"Qt c #a2c511",
+".f c #a2c513",
+".g c #a2c60a",
+".e c #a2c60c",
+".d c #a2c60e",
+"co c #a2c61a",
+"sY c #a2c61c",
+"ov c #a2c705",
+"dV c #a2c707",
+"du c #a2c708",
+"jd c #a2c715",
+"Bh c #a2c717",
+"bx c #a2c718",
+"FW c #a2c800",
+"FX c #a2c801",
+"FY c #a2c803",
+"r5 c #a2c811",
+"jb c #a2c813",
+"Av c #a2c90c",
+"tc c #a3b547",
+"nk c #a3b64b",
+"oG c #a3b851",
+"il c #a3bb25",
+"pb c #a3bb43",
+"my c #a3bb4b",
+"zR c #a3bc44",
+"E5 c #a3bc47",
+"CC c #a3bd1c",
+"FJ c #a3bd24",
+"x6 c #a3bd28",
+"qH c #a3bd42",
+"FA c #a3be21",
+"#P c #a3be39",
+"qW c #a3be3d",
+"oC c #a3bf46",
+"xw c #a3c00e",
+"CS c #a3c010",
+"jQ c #a3c016",
+"FQ c #a3c01a",
+"yl c #a3c026",
+"g5 c #a3c028",
+"rN c #a3c02a",
+"jO c #a3c111",
+"gL c #a3c121",
+"mv c #a3c125",
+"kD c #a3c12d",
+"kN c #a3c20f",
+"eP c #a3c21e",
+"Ei c #a3c226",
+"F. c #a3c227",
+"jM c #a3c30a",
+"bO c #a3c316",
+"kr c #a3c318",
+"zb c #a3c31a",
+"rr c #a3c320",
+"l2 c #a3c322",
+"mg c #a3c324",
+"jh c #a3c331",
+"kq c #a3c411",
+"mp c #a3c413",
+"iO c #a3c415",
+".Z c #a3c41b",
+".1 c #a3c41d",
+"ds c #a3c41f",
+"DJ c #a3c500",
+"aw c #a3c50c",
+"en c #a3c50e",
+"eO c #a3c50f",
+".o c #a3c516",
+".w c #a3c517",
+".v c #a3c519",
+"em c #a3c607",
+"os c #a3c60a",
+"cv c #a3c610",
+".i c #a3c612",
+".l c #a3c614",
+"dq c #a3c70b",
+"dS c #a3c70d",
+"ek c #a3c70f",
+"iw c #a3c808",
+"ja c #a3c816",
+"Ak c #a3c900",
+"zW c #a3c902",
+"kz c #a3c912",
+"j# c #a3c914",
+"r3 c #a3c91a",
+"k2 c #a3ca0d",
+"sU c #a3ca17",
+"zL c #a3cb13",
+"Cg c #a4bb51",
+"op c #a4bc26",
+"ro c #a4bc30",
+"aB c #a4bc44",
+"tS c #a4bc4c",
+"g4 c #a4bd2e",
+"eI c #a4bd3e",
+"im c #a4be1d",
+"sB c #a4be25",
+"DZ c #a4be36",
+"pF c #a4be37",
+"q4 c #a4be41",
+"kL c #a4bf22",
+"pT c #a4bf3e",
+"CD c #a4c013",
+"i2 c #a4c014",
+"CR c #a4c016",
+"ph c #a4c01d",
+"lT c #a4c01e",
+"p1 c #a4c02d",
+"ei c #a4c038",
+"iq c #a4c10d",
+"sq c #a4c10f",
+"ip c #a4c111",
+"az c #a4c127",
+"rs c #a4c131",
+"q1 c #a4c20c",
+"ho c #a4c226",
+"oY c #a4c22c",
+"ys c #a4c230",
+"jN c #a4c30e",
+"xN c #a4c310",
+"ge c #a4c31d",
+"eo c #a4c320",
+"g6 c #a4c328",
+"Do c #a4c401",
+"n5 c #a4c407",
+"jJ c #a4c409",
+"pK c #a4c40b",
+"rc c #a4c419",
+"ka c #a4c41b",
+"D8 c #a4c421",
+"#s c #a4c423",
+"wT c #a4c432",
+"n7 c #a4c512",
+"rR c #a4c514",
+"e4 c #a4c516",
+".u c #a4c51c",
+".0 c #a4c51e",
+"#d c #a4c520",
+"cw c #a4c610",
+".y c #a4c617",
+".x c #a4c618",
+".J c #a4c61a",
+"fw c #a4c711",
+".j c #a4c713",
+"gO c #a4c715",
+"bA c #a4c722",
+"cg c #a4c725",
+"ix c #a4c80c",
+"l4 c #a4c80e",
+"#H c #a4c810",
+"ck c #a4c81c",
+"cl c #a4c820",
+"#4 c #a4c909",
+"#6 c #a4c90a",
+"sx c #a4c917",
+"s7 c #a4c91a",
+"xe c #a4ca03",
+"Az c #a4ca12",
+"mf c #a4ca13",
+"Bg c #a4ca15",
+"bu c #a4cb0c",
+"AW c #a4cb0e",
+"kx c #a4cb10",
+"w1 c #a5b747",
+"ym c #a5b84c",
+"EU c #a5b84d",
+"rY c #a5ba3b",
+"rt c #a5bc47",
+"xp c #a5be48",
+"v1 c #a5be49",
+"oT c #a5bf1e",
+"FK c #a5bf26",
+"t6 c #a5bf28",
+"pu c #a5bf44",
+"in c #a5c019",
+"u5 c #a5c023",
+"AB c #a5c033",
+"Fj c #a5c03d",
+"io c #a5c114",
+"n4 c #a5c115",
+"DM c #a5c11f",
+"ar c #a5c139",
+"Cl c #a5c20e",
+"Cm c #a5c212",
+"BU c #a5c21a",
+"mm c #a5c21c",
+"vl c #a5c228",
+"Bi c #a5c22a",
+"lI c #a5c236",
+"ir c #a5c30d",
+"r0 c #a5c313",
+"wh c #a5c316",
+"dx c #a5c323",
+"f# c #a5c325",
+"Dn c #a5c404",
+"pO c #a5c40e",
+"FG c #a5c40f",
+"DX c #a5c41e",
+"k0 c #a5c428",
+"qJ c #a5c429",
+"zJ c #a5c42b",
+"oJ c #a5c50a",
+"om c #a5c50c",
+"mZ c #a5c518",
+"kp c #a5c51c",
+"#r c #a5c522",
+"nD c #a5c613",
+"c2 c #a5c615",
+"#I c #a5c61d",
+"BH c #a5c621",
+"gc c #a5c710",
+"f9 c #a5c711",
+"#2 c #a5c718",
+"e7 c #a5c719",
+"#f c #a5c71b",
+"dT c #a5c812",
+".k c #a5c814",
+".B c #a5c816",
+"#E c #a5c90d",
+"#k c #a5c90f",
+"#l c #a5c911",
+"jZ c #a5c91f",
+"#C c #a5ca0a",
+"m1 c #a5ca0b",
+"xk c #a5ca1b",
+"yR c #a5cb13",
+"y4 c #a5cb1c",
+"mH c #a5cc0d",
+"tZ c #a5cd15",
+"CG c #a6b946",
+"rH c #a6ba47",
+"ox c #a6bb42",
+"td c #a6bd2e",
+"f6 c #a6be36",
+"D0 c #a6be42",
+"mS c #a6be44",
+"qb c #a6bf49",
+"qB c #a6bf4a",
+"Ck c #a6c01e",
+"Fb c #a6c027",
+"FN c #a6c029",
+"pn c #a6c11a",
+"h5 c #a6c136",
+"vV c #a6c13e",
+"pN c #a6c215",
+"CP c #a6c21f",
+"ER c #a6c220",
+"BG c #a6c231",
+"nZ c #a6c239",
+"A6 c #a6c30f",
+"#M c #a6c335",
+"pL c #a6c337",
+"x7 c #a6c414",
+"qm c #a6c426",
+"xX c #a6c42e",
+"j0 c #a6c432",
+"FT c #a6c50f",
+"FI c #a6c512",
+"Be c #a6c51f",
+"Ej c #a6c52a",
+"x8 c #a6c609",
+"is c #a6c60d",
+"ga c #a6c61b",
+"dU c #a6c71e",
+"#e c #a6c720",
+"tI c #a6c722",
+"h9 c #a6c80f",
+"ny c #a6c811",
+"gd c #a6c812",
+".p c #a6c819",
+".q c #a6c81a",
+".H c #a6c81c",
+"l3 c #a6c913",
+".8 c #a6c915",
+".Q c #a6c917",
+"zu c #a6c925",
+"#G c #a6ca0e",
+"kd c #a6ca10",
+"#3 c #a6ca12",
+"ui c #a6ca20",
+"ut c #a6ca22",
+"pr c #a6cb09",
+"ot c #a6cb0b",
+"#F c #a6cb0c",
+"sE c #a6cb19",
+"kv c #a6cb1b",
+"pq c #a6cc05",
+"xQ c #a6cc07",
+"bv c #a6cd10",
+"u. c #a6cd12",
+"yS c #a6ce0b",
+"zM c #a6ce15",
+"th c #a6ce16",
+"ww c #a7b755",
+"so c #a7b850",
+"p2 c #a7ba4e",
+"Co c #a7bb40",
+"t5 c #a7bb4a",
+"hE c #a7bc3d",
+"BY c #a7bd34",
+"xy c #a7bf2b",
+"tu c #a7bf4d",
+"l8 c #a7bf51",
+"Fz c #a7c02e",
+"s3 c #a7c128",
+"l1 c #a7c13a",
+"h# c #a7c144",
+"Dm c #a7c21b",
+"wg c #a7c225",
+"Cj c #a7c321",
+"rD c #a7c330",
+"Da c #a7c412",
+"qy c #a7c414",
+"pa c #a7c42a",
+"tJ c #a7c42e",
+"zQ c #a7c436",
+"qj c #a7c438",
+"FR c #a7c515",
+"DG c #a7c517",
+"lW c #a7c529",
+"nb c #a7c533",
+"FS c #a7c611",
+"mP c #a7c613",
+"qM c #a7c620",
+"vt c #a7c62a",
+"g7 c #a7c62d",
+"gM c #a7c71e",
+"dR c #a7c726",
+"BI c #a7c728",
+"zv c #a7c738",
+"kO c #a7c817",
+"a3 c #a7c819",
+"#1 c #a7c823",
+"yD c #a7c831",
+"uC c #a7c833",
+"gN c #a7c91a",
+".N c #a7c91b",
+"kb c #a7c91d",
+"tY c #a7c92a",
+"k7 c #a7c92d",
+"a6 c #a7ca0e",
+"ra c #a7ca14",
+"g. c #a7ca16",
+".D c #a7ca18",
+"kP c #a7cb11",
+"ln c #a7cb13",
+"#D c #a7cc0d",
+"ku c #a7cc1a",
+"tH c #a7cd16",
+"la c #a7cd18",
+"A# c #a7ce13",
+"oS c #a8bc3f",
+"BC c #a8bc4b",
+"sh c #a8bd44",
+"BS c #a8bf53",
+"hG c #a8c02a",
+"xf c #a8c044",
+"m5 c #a8c050",
+"iH c #a8c142",
+"tP c #a8c149",
+"FL c #a8c229",
+"tO c #a8c22b",
+"As c #a8c245",
+"#W c #a8c247",
+"pJ c #a8c326",
+"c4 c #a8c338",
+"qt c #a8c340",
+"i7 c #a8c417",
+"Dc c #a8c418",
+"t1 c #a8c433",
+"#O c #a8c43c",
+"i3 c #a8c511",
+"ow c #a8c52d",
+"xo c #a8c535",
+"qa c #a8c537",
+"za c #a8c539",
+"i4 c #a8c610",
+"Br c #a8c616",
+"rp c #a8c619",
+"q3 c #a8c630",
+"x1 c #a8c632",
+"u6 c #a8c634",
+"u1 c #a8c723",
+"pt c #a8c72b",
+"DB c #a8c72c",
+"sr c #a8c80b",
+"Al c #a8c80d",
+"xO c #a8c80f",
+"CO c #a8c825",
+"wM c #a8c829",
+"FF c #a8c916",
+"Ev c #a8c920",
+"y5 c #a8c932",
+"qI c #a8c934",
+"uZ c #a8ca14",
+"C7 c #a8ca1b",
+"nB c #a8ca1c",
+".I c #a8ca1e",
+"uO c #a8ca2e",
+"n6 c #a8cb0f",
+"lm c #a8cb15",
+"lA c #a8cb17",
+"FE c #a8cb19",
+"uh c #a8cb29",
+"zl c #a8cc10",
+"sG c #a8cc14",
+"pP c #a8cd0e",
+"ou c #a8ce09",
+"ri c #a9be47",
+"u4 c #a9bf40",
+"rT c #a9c04e",
+"ma c #a9c151",
+"ua c #a9c153",
+"uE c #a9c240",
+"vy c #a9c24a",
+"yO c #a9c24d",
+"CQ c #a9c321",
+"tm c #a9c32c",
+"gf c #a9c33b",
+"ko c #a9c33e",
+"ng c #a9c344",
+"Ez c #a9c427",
+"hs c #a9c435",
+"ul c #a9c439",
+"BT c #a9c43f",
+"Eh c #a9c441",
+"mh c #a9c443",
+"CE c #a9c51b",
+"#N c #a9c53c",
+"p8 c #a9c53d",
+"po c #a9c612",
+"i5 c #a9c614",
+"i6 c #a9c616",
+"eJ c #a9c62e",
+"lC c #a9c636",
+"zq c #a9c63a",
+"oU c #a9c711",
+"hK c #a9c719",
+"np c #a9c731",
+"nY c #a9c812",
+"r# c #a9c82d",
+"AI c #a9c90c",
+"F# c #a9c910",
+"iM c #a9ca21",
+"p# c #a9ca23",
+"#J c #a9ca25",
+"br c #a9ca33",
+"Fn c #a9cb1c",
+".L c #a9cb1f",
+"g# c #a9cc18",
+"qK c #a9cc1a",
+"fu c #a9cd07",
+"fz c #a9cd13",
+"lz c #a9cd15",
+"cp c #a9cd21",
+"xl c #a9cf1a",
+"g0 c #aabc4c",
+"pM c #aabc50",
+"De c #aabf3c",
+"c5 c #aac14c",
+"vJ c #aac24a",
+"zY c #aac329",
+"fa c #aac341",
+"BX c #aac422",
+"mO c #aac42b",
+"FM c #aac42d",
+"aT c #aac43f",
+"hR c #aac449",
+"Bc c #aac538",
+"zG c #aac544",
+"D. c #aac61c",
+"vj c #aac633",
+"oq c #aac713",
+"e3 c #aac72f",
+"mF c #aac737",
+"h. c #aac739",
+"wL c #aac818",
+"g8 c #aac832",
+"bq c #aac844",
+"Fp c #aac914",
+"FD c #aac92e",
+"jr c #aac930",
+"mR c #aaca29",
+"nf c #aaca2b",
+"rO c #aacb1a",
+"hL c #aacb1c",
+"Au c #aacb22",
+"FV c #aacc1d",
+"EO c #aacd17",
+"Fm c #aacd19",
+"c1 c #aace16",
+"bE c #aacf1d",
+"tC c #abbd4d",
+"EB c #abc03f",
+"BL c #abc04b",
+"g3 c #abc138",
+"BF c #abc23c",
+"Er c #abc256",
+"Fy c #abc33b",
+"ia c #abc34b",
+"fB c #abc442",
+"kE c #abc44e",
+"x2 c #abc44f",
+"dY c #abc540",
+"Ek c #abc637",
+"BV c #abc71d",
+"CB c #abc725",
+"fs c #abc727",
+"Bs c #abc818",
+"rS c #abc832",
+"zU c #abc838",
+"tp c #abc935",
+"g9 c #abc937",
+"nn c #abca15",
+"pE c #abca26",
+"dX c #abca27",
+"js c #abca2f",
+"cX c #abca31",
+"uN c #abcb2c",
+"bL c #abcc19",
+"dt c #abcc27",
+"md c #abcd1e",
+"a7 c #abce10",
+"kc c #abce18",
+"z8 c #abce1a",
+".O c #abce1c",
+"sH c #abcf17",
+"xv c #acbf4c",
+"oZ c #acc04d",
+"tX c #acc04f",
+"qZ c #acc13e",
+"xL c #acc244",
+"hF c #acc337",
+"lj c #acc430",
+"Ac c #acc44c",
+"wq c #acc452",
+"nO c #acc550",
+"p6 c #acc631",
+"aA c #acc63e",
+"eQ c #acc63f",
+"b. c #acc72c",
+"sJ c #acc837",
+"dQ c #acc83f",
+"Ab c #acc933",
+"mn c #acca1c",
+"fA c #acca2a",
+"#Z c #acca38",
+"ll c #accb16",
+"iI c #accb2f",
+"#0 c #accb30",
+"gQ c #accc1f",
+"ly c #accc2d",
+"at c #accd28",
+"iN c #accf10",
+"kC c #acd026",
+"xz c #adbf4f",
+"ry c #adc04d",
+"qS c #adc344",
+"CF c #adc435",
+"wZ c #adc438",
+"vL c #adc440",
+"Bj c #adc442",
+"sp c #adc533",
+"rd c #adc53b",
+"vr c #adc53d",
+"ml c #adc636",
+"Fc c #adc637",
+"yw c #adc650",
+"kS c #adc72e",
+"BJ c #adc83d",
+"vZ c #adc843",
+"nE c #adc938",
+"DF c #adca20",
+"tt c #adca3a",
+"a. c #adcb37",
+"lx c #adcb39",
+"yk c #adcc19",
+"zI c #adcc31",
+"as c #adcc33",
+"FU c #add01a",
+"l5 c #add119",
+"x5 c #aec24f",
+"i0 c #aec342",
+"CU c #aec536",
+"EA c #aec632",
+"qr c #aec63c",
+"vT c #aec735",
+"tD c #aec738",
+"BK c #aec745",
+"xb c #aec92e",
+"mq c #aec93e",
+"yI c #aecb35",
+"mx c #aecb3b",
+"va c #aecb3d",
+"E4 c #aecb3f",
+"pD c #aecd31",
+"cf c #aecd41",
+"#9 c #aece2d",
+"hP c #aece2f",
+"of c #aecf26",
+"yZ c #aecf3a",
+"DK c #aed008",
+"Ci c #aed11b",
+"uo c #afc350",
+"ya c #afc354",
+"oI c #afc44b",
+"ik c #afc53e",
+"Bv c #afc638",
+"zc c #afc836",
+"nl c #afc839",
+"mE c #afc853",
+"#X c #afc94c",
+"C9 c #afca23",
+"gT c #afca3b",
+"D6 c #afca45",
+"E9 c #afca47",
+"cz c #afcc36",
+"kZ c #afcc3c",
+"Fr c #afcd1f",
+"pS c #afcd37",
+"CA c #afcd39",
+"qA c #afcd3b",
+"D9 c #afce33",
+"Ai c #afd029",
+"mu c #b0c647",
+"mN c #b0c64a",
+"iP c #b0c741",
+"yJ c #b0c745",
+"Dd c #b0c92f",
+"dy c #b0ca42",
+"t8 c #b0ca4f",
+"i# c #b0cd37",
+"s8 c #b0cd3d",
+"Ch c #b0cd41",
+"At c #b0ce38",
+"DC c #b0cf1a",
+"zA c #b0d02f",
+"l. c #b0d138",
+"xY c #b0d42a",
+"mX c #b1c645",
+"n3 c #b1c740",
+"ok c #b1c749",
+"Dr c #b1c83c",
+"nW c #b1c842",
+"b# c #b1c844",
+"cA c #b1c941",
+"wn c #b1c959",
+"i1 c #b1ca30",
+"y# c #b1ca3b",
+"od c #b1ca55",
+"hQ c #b1ce3e",
+"oD c #b1d035",
+"El c #b2c84c",
+"BE c #b2c945",
+"wf c #b2c947",
+"AK c #b2cb32",
+"ES c #b2cb3b",
+"iz c #b2cb56",
+"j9 c #b2cd3e",
+"DV c #b2cd4a",
+"Dq c #b2ce22",
+"cW c #b2ce45",
+"f7 c #b2cf25",
+"aU c #b2cf3f",
+"mb c #b2cf43",
+"lU c #b2d11e",
+"nQ c #b2d138",
+"ej c #b2d231",
+"v0 c #b2d33a",
+"uI c #b3c84f",
+"fr c #b3c94b",
+"Fd c #b3ca44",
+"qN c #b3ca46",
+"lq c #b3ca48",
+"gK c #b3cb41",
+"wU c #b3d044",
+"Fq c #b3d21f",
+"CV c #b4c751",
+"zC c #b4c946",
+"Fx c #b4c950",
+"zw c #b4cc5a",
+"nw c #b4cd33",
+"#Y c #b4cf4e",
+"jx c #b4d02e",
+"l7 c #b4d143",
+"sQ c #b5c469",
+"g2 c #b5ca47",
+"qw c #b5ca4b",
+"wa c #b5ca51",
+"jG c #b5cb4c",
+"BD c #b5cb4d",
+"Cn c #b5ce32",
+"bP c #b5d131",
+"zi c #b5d149",
+"tR c #b5d244",
+"w0 c #b6cb48",
+"qn c #b6cb52",
+"ET c #b6cc50",
+"wJ c #b6cf3f",
+"xS c #b6d048",
+"lM c #b6d24a",
+"An c #b7cc49",
+"kK c #b7cd4f",
+"do c #b7d448",
+"zm c #b7d63d",
+"wC c #b8c575",
+"wx c #b8c76c",
+"uX c #b8d159",
+"mJ c #b8d350",
+"q. c #b9cc56",
+"g1 c #b9cd52",
+"z5 c #b9d453",
+"AZ c #bacf58",
+"DN c #bad14d",
+"Eu c #bad455",
+"hn c #bcd351",
+"yi c #bcd44c",
+"A0 c #bdca7a",
+"A8 c #bdd445",
+"bQ c #c1d750",
+"E2 c #c1d951",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.#.#.#.#.#.#.a.a.a.a.a.a.b.a.a.#.a.a.b.b.b.b.a.#.#Qt.c.d.e.d.cQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.f.#.#.#.#.#.#.a.a.#.f.#.#.a.a.a.a.#.#.fQt.c.d.e.d.cQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.e.g.e.e.e.e.d.d.c.cQtQt.f.f.#.fQtQtQtQtQtQtQtQtQtQtQt.c.d.d.d.d.cQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.e.g.e.e.e.e.d.d.d.d.c.c.c.cQtQtQt.cQt.cQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.f.f.fQtQtQtQt.c.c.d.d.d.d.d.cQtQt.fQt.f.f.f.f.#.#.a.a.b.b.h.b.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.#.a.a.a.#.#.f.fQt.c.c.d.d.e.e.dQtQtQtQtQtQtQtQt.f.f.#.#.a.b.b.a.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.#.a.#.#.#.#.f.fQt.c.c.c.c.d.d.d.c.c.d.d.e.g.g.g.g.g.e.d.d.c.cQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.#.#.#.#.f.f.f.f.f.f.f.fQtQtQtQt.c.c.d.e.e.g.g.g.e.e.e.d.d.cQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.i.j.k.l.m.n.o.p.q.a.r.s.t.u.u.v.b.w.x.x.y.#.z.A.B.A.CQt.i.A.n.DQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.i.E.C.C.n.f.m.F.F.G.a.H.I.I.H.v.J.a.K.r.K.v.H.L.M.s.M.N.N.a.G.#.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.O.B.A.P.l.Q.B.R.S.T.c.c.U.V.W.X.iQt.n.F.Y.M.Z.0.1.2.3.4.5.6.7.G.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.R.EQt.k.8.k.i.c.c.c.9.U.T.9.c#..P##.x.Z#a.3#b#c#c#d#e#f.##g#hQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c#i#j#k#l#m#n#o#p.m.f.a.w.w.v.b.b#q.h.0#r#s#t#u#v#w#x#y#z#A#B#C#D.dQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c#E#F#G#H.R###I#J#t#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#N#Z#0#1#2#3#4#5.dQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.d#6#7#8.R.L#9a.#N#Wa#aaabacadaeafagahaiajakalamanaoapaqarasat.GauQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.cav.cavQt.f.f.f.#.f.fQt.c.c.d.dawaxayazaAaBaCaDaEaFaGaHaIaHaJaKaLaMaMaLaLaKaJaNaNaOaPaQaRaSaTaUaVaW.h.#Qt.d.c.c.f.#.#.#.#.f.fQt.f.f.f.f.fQt.fQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.caXaYaXaZa0a1a2a2.Z.va3a4a5a6a7a8a9b.b#babbbcbdaKbebfbfbfbfbgbgbhbibibjbkbkaMaMaMaLaKblaJaHbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbE.#.#.#.#.#.f.#.f.f.fQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtavbFbGaYaZbHbIa2a2.JbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbYbZb0b1b1b1b1b2b3b3b4b4b3b5b6b7b8b9c.c#aMcacbcccdcecfcgchcicjckclcmcncocpcqcr.a.#.a.#.#.#.#.f.f.fQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtavcsctctaZa0cua1cu.RcvcwcxcyczcAcBcCcDcEblaMc#cFcGb8bZb0cHcIc#c#c#cJcJcJcJcKb4b5cLcMcNcNcOcPcQcRaLaHcScTcUcVcWcX#bcY.y.8.U.m.N.0cZ.a.f.#.f.f.f.fQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQta0avc0c0c0a0a0avcs#kc1c2c3c4c5c6c7c8aMaMc9d.d#b1dab1b1cHdbc#c#c#c#cJcJcJcJcJdcb3b5dddedfcNdgdhdidjdkaLaJaOdldmdndodp.Y.ddqdr.Pdsdt.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQta0a0bHcucua0cs.gdudvdwdxdydzdAdBaJbWdCdDdEcHcQcQcQcIcIdbcIc#c#c#c#bjbibjaMaMaMaMbjdadFdGdHdIdJdJdIdKdLdMblaIdNdOdPdQdR.i.gdSdT#IdU.f.c.c.c.c.c.c.c.c.cQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtcubIa1cuavaXdVdudWdXdYdZd0d1aJaLcNd2dfb7d3d4d5c9cIdbcHcHdbdbc#dbd6dId7bibjbkbkbkd8d9e.e#b7b7eaebececedeeaMaIefegeheiej.p.Vek.B#h.c.d.d.d.d.d.c.c.c.cQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.fa1elelcu.dduemeneodYepeqaJaLerd.dhdIb7escQetcIcQb1b0bZb8b8bZbZb8euecevewd6d7exbieyezeAdadaeBeCeDeEdFb7eeeFaMaKaHeGeHeIeJeKeLeMeN.g.e.e.e.d.d.d.d.c.cQtQtQtQt.f.fQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.felela1a0.e.eeOePeQeReSblcRd4cRcQd3cPcPcPeTdaesdFb8b8b8b8bZb0b0b0d7d7d7d7exexexexeUeVdadad9djeWcRaKeXeYesdFeseZaKaIe0e1e2e3e4e5e6du.e.d.d.d.d.d.d.c.cQtQtQtQt.f.fQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.fe7.xe8dSe9f.f#fafbfcaKcKb3b3fdfeffd8esb8fgdfdKfhcNcLfibWcJcRcRaMfjaJblaKaLaKfkflfmdFdFdFdFdFexfnbgaMcRcRdaeUd6escRfofpfqfrfsftfudqfvcvfwcv#Afxcv.c.cQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.Jfy.dfzdwfAfBfCfDblcQfEfFb1fGfHfIeTdFdIdKfJfKdCficJaLbefLfMfNfOfPfQaifRfSfOaJblaKaLfTfUfVdFdJfWeWfXfYfZf0f1f2ewdJfZf3f4f5f6f7f8f9.R.i.EQtg..ig#QtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.fgagbgcgdgegfepggaLd8ghgigjfHfHfHdagkglgmcNdJdacRaKgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDaHblaLgEgFgGcNf2gHdad8eBgHdHdIgHaMaJgIgJgKgLgM.qgN.z.zgNgO.f.fQtQtQt.c.c.c.cQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.fgPgQgRgSgTgUeqblb4ddgVb3fHfHfHgjfFb6b5d3cQaMaKgWgXgYgZg0g1g2g3g4g5g6g7g8g9h.#Oh#hahbhchdheaKhfhgcNhhdGdFdahihjdFdJhkf0aLaNhlhmhnho.h.Z.b.b.b.Y#g.#.fQtQt.c.c.c.cQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQthphqhrhshthuaJcRb5hvb3fHhwhwhxhyb7cPhzaLaJhAhBhChDhEhFhGhHhIhJhKhL.Q.m.ShM#.hNhOhPhQhRhShThUhVaKd8hWhXhYd3d8d8b3eshZh0h1h2aIh3h4h5h6h7h8#e.0.Z.I.#.fQtQt.c.d.d.cQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.ch9i.i#iaibicaLd.b2b0gjfHhwidiehyifbWaLigihiiijikiliminioipiqirisit#jiuiuivdViwix.9.7iydQiziAiBiCaKcRcQd#iDdad8d#d8h0d8cQiEaLiFiGiHiI#uiJ#riKiLiM.a.#.f.c.c.d.d.d.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.diNiOiPiQiRblercRiSiTfHfHiUiVieiWiXcRf3iYiZi0i1i2i3i4i3i5i6i7ioi8e8i9j.j#jajba0jca0jdjejfjgjhjijjjkjlaLcRjmesdajndbcIcQcQjod4cRjpjqjrjsjtjujvh8.1.b.#.f.c.c.d.e.d.cQtQtQt",
+"QtQt.c.cQtQt.f.fQtQtQtQtQt.c.d.ejwjxjyjzbljAjBcRjCcKfHgjjDjDiUiSaMgnjEjFjGjHjIjJjKjLjMjNjOjPjQjR.UjSjTjUcqjVjWjXjYa0jbcichcqjZj0j1j2j3aKj4d7dFiDj5cRj6fIdahZb5aKj7j8j9k.k##qkakb.#.fQtQtQt.c.d.d.cQtQtQt",
+"Qt.c.d.d.c.f.#.#.mg.kc.T.Tkdkeh9kfbQkgaJkhb6kic#aMcRcQkjb5bXkkaMklkmknkoazkpiOcweOeneOeOkqiOkr.#ksktkukvkwjbkxkykzkAbxa2bDkwkBkCkDkEkFkGaLkHkIb7hibgbgbgcHb0b8c#aIkJkKkLkMenkNkOeOeO.cQt.a.aa0avQtQtQtQt",
+"Qt.c.d.d.c.f.a.a.f.jfwe8#HkPkQkRkSbRkTaLkUcNdaetcRkVb4esesd8cQkWkXkYkZk0.7#hk1#..fQt.c.c.cQt.a.fk2k3k4jdcjk5k6clk7k8k9l.l#cqlalblcldlelflgaLfVdFd9bhbgbgcHb0b8b1aMlhliljkMlklljNenen.c.f.b.bcuavQtQtQtQt",
+".fQt.d.d.c.f.#.a.lQte8.VlmlnlolplqlrlsaMltb7d8lucIfIcPdacRaLfolvlwlxlyhO.C.d.c.cQtQt.d.d.d.c.f.f#3.elzlAlBh6lClDlElFlGlHlI#vlJ.9lKlLlMlNlOlPaLlQd9d9hihib1b0bZb1cRlRlSi0lTi8lUlVeOkqQt.f.b.acua0QtQtQtQt",
+".fQt.d.d.c.f.#.a##.fe8.Tlmfw.ClWbalXblc9d#dacQlud3esbXjoaLlYlZl0l1l2.s.CdS#G#3l3QtQt.d.e.e.eQtQt#3l4l5.Bl6l7l8l9m.aNdNm#mambmcmdmemfmgmhmimjaIfMbheUeUeUb1b1b0b1cQaKbTmkmlmmmnmokqmp.f.#.a.acua0QtQtQtQt",
+".fQt.c.d.cQt.#.a.FgO.c.ccv.m#fmqmrbUaLhzcIlucRetbZdJcLd5aJmsmtmumvlB.V.e.gmw.T.n.fQt.d.e.g.g.c.d#Glo#odsmxmymzmAaLmBaJmCmDmEmFmGkymHmIiJmJmKmLaJbge#eaeab0b1b1b1esergnmMmNmOa9mPmpiO.a.a.#.#a1cuQtQtQtQt",
+".fQt.c.d.cQt.#.amQ.Bl3ek.C.amRmSmTbVc9c.cRmUc9dbdImVb7aMj3mWmXmYmZm0#Bm1#8m2.n.o.#.f.d.gdu.g.d.edVm3m4aUm5m6m7aKm8dKm9bln.n#nanbncndnehMnfngnhaNbed9eaeab0cHcHb1dFniaKnjnknlnmnnmpiO.b.a.f.fa1a1.fQtQtQt",
+".fQt.c.c.d.c.f.ano#2fwdrk1#enpnqnrbWnsjmcRc9c#b4cNntdaaKnunvnwnxnyne#BixnznAnBkb.b.#.d.gdudu.d.enCnDnEnFnGnHaKnInJdKnKnLaInMnNnOjhnPkd#Bk1nQnRnSnTbge#eab0cHcHcHdFkiaMnUnVnWnXnYkqiO.b.aQtQta1el.fQtQtQt",
+".f.fQt.c.d.c.f.#.J.o.9#mhNmRnZe1aKbXn0dacQcRcQesfhn1cRlsn2n3n4n5n6mwdq#E.V.m.HhO.a.f.edVdVdu.dQtn7n8n9o.o#aKoadFkIdIdJobblaImCocodoe.Yneiuofogohoibfhie#b1cHdbcHesdacQblojokolomeOmp.b.aQt.celel.fQtQtQt",
+".#.f.fQt.d.dQt.#.H.Ym0.d##on#WoobebYb8b0dbdbb1b8cNb2aLgXhDopoqoros.e.e.eQt.f.b.a.l#motouovdul3.ZowoxoyozaLhje#eUd8fZd8cRcRoAaKlPoBoCoDoEmw.BoFoGf4bljAdad3b4cQdcb4d8d#caoHoIoloJoKoLno##.c.ccqoM.fQtQtQt",
+".#.#.fQt.d.dQt.#.b.GoN.d.aoOa#oPbebYbZb1dbcHb8gmdIcQoQoRoSoToUoVos.e.e.e.c.f.#.f.UmwoWoXkQm0nooYoZo0o1aKo2o3f2o4o5bfero6o7dacRblo8o9p.p##j.cpapbpcpdpecRb4b3b4dbcQcQcPaLpfpgphoJpipj####.c.ccqoM.fQtQtQt",
+".#.#.#Qt.e.eQt.#hO.b.d.d.bpkaaaGbebZb1cHcHb0gmdebYaMplpmhFpnpojJos.g.g.g.e.d.c.d#Gpppqprps.sptpupvpwaKpxpydIdJf1cRoApzfZesdFpAc8lPpBpCpD.RdrpEpFpGdBpHaMd8b1d8etcRcQhZaMo#pIpJpKpioK.m.m.c.ccqcq.fQtQtQt",
+".#.#.#Qt.e.g.c.#m4.H.ddr.vpLabaNbfb1cHdbcHb0dedecGbfbTpMhGpNi5pOaw.g.g.g.e.e.d.epPpQot#lpRpSpTpUpVaMcRpWdFdJb7escRfYo5cRdaeAhiblpXpYpZp0.mekgbp1p2p3lYaLd8b0d8cKcRcQdhcRp4p5p6mooKoK.R.m.cQtjUjU.fQtQtQt",
+".#.#.a.f.e.g.c.#p7.I#m#m.Zp8acaIbfcHcIcIdbb0dedeb2pep9q.q#ipi6kNeO.d.e.e.e.e.e.e.gm3.WpRqaqbqcqdaLdad8d8eshZcGesdaqedadaqfc#aLqgqhqiqjqk#2.dqlqmqnqoaIaKd8b0d8cQcQdaqpcQaIqqqrqspjoK.R.mQtQtjTjTQtQtQtQt",
+".#.#.a.f.e.g.c.#.0.InzoN.ZqtadaHbfdbcIc#dbb0dededaquqvqwqxiqqyqzmpQt.c.d.d.d.d.d.c#hm4qAqBqCqDaJjAeTd8d8qEd3dab1bWdadFiDc#aKqFqGqHqIqJ#dqKoNqLqMqNqOqPaLb3b5cQcQd8b5qQdaaJqRqSqTqUoK.R.mQtQtj.j.QtQtQtQt",
+".#.#.a.f.g.g.c.#.0.HqV#jiLqWaeaIbgcHc#c#c#b1deded8qXqYqZq0q1ipkfbO.a.f.f.f.f.f.#.qq2q3q4q5qDaJq6aLaMcRc.q7esd8dbcQd8q8b1aMq9r.oZr#je.s.yra#jrbrcrdrerfaLeTdFdbcQb3dJrgbZblrhrijHrjpj.R.m.fQtj.j.QtQtQtQt",
+".f.f.#.f.c.d.c.f.Z.wrk.diLrlafblbgcHc#c#cIb1debYcRrmrnrorpomkMrq.#.#.f.fQtQtQt.arrrsrtrurvaJq6rwoAcRdcdaesesb3d8b1dah0aMgnrxryrzcYrAcirB.c#k#jrCrDrErFaLeBdFlucRbWdFcMb5aKrGrHrIrjpj##noQt.crArAQtQtQtQt",
+".d.c.f.a.a.#.c.c.z.l#H.CiLrJahaLbkb3cKcKbid6evd7rKrLrMrNrOrP.C.Eksk2l3l3#GdurQrRrSrTrUrVaLpxpxoAb4b5b6b6b5b5b5b6dIrWaMnrrXrYrZr0bxr1r2r3r4r5mfr6r7r8r9aLs.esjAaMcRcJb3cQaKs#sasbiOkqiLiL.c.ecsavQtQtQtQt",
+".e.d.f.aiL.b.c.dQtQt.c.AdsscahaMbjb3dcdcexd6ewbiaJsdseg6l3ivi9r4bFsfdreksgm3nDn8shsisjaMdad3ercRb2skskcLb5b2b5cLsldFsmsnsospsqsrcjssstsusvswsxckiKsyiCaLeFexaKaLaMcJcKcQaMszsAsBmpkqiKiK.cducsavQtQtQtQt",
+".d.cQt.#.h.b.c.e.k.m.E.zrrsCsDaMbkb4dcdcbjexdIbiaKfRgwg7.9kej.jUsEsFsGsHsI#ysJsKsLsMaKaMcHd8cJetb2b6b5b2b4dcb3b5sNdFsOsPsQg2sRsScssTbHsUsVsWsXsYl2pusZaLeFs0cRbfcJcRcQcKaMs1s2s3mpeOiLiL.c.gava0QtQtQtQt",
+".c.cQt.#.h.a.d.e.8.n.Pnol2s4s5aLbkb4dcdcbkbid6biaLs6gxg8.V#7jabxs7jTg..liKs8s9t.ozfTt#tad8d8d#bWb2b2b2b4cJcJcJb4dJfEcRlRtbtctdtejStftgthsxchtitjk0tktlaLexfWd8bVc#cJd8dbaMs#s2tmiOeO.h.h.d.gava0QtQtQtQt",
+"QtQt.f.#.b.a.d.e.8.m.P.MtntktoaLaMb4b4dcaMbkd7biaLnHgytp#ntqjaoMbDkwtrtstttutvtwaLtxtydFb2tzltesb2b2b4cKbgbgbgcJb2gkcHaLtAtBtCtDcjtEtFtGtHsx.wtItJtKfSaLextLdafZdcdbb0b4aLtMtNtOiOeO.b.a.d.ea0cuQtQtQtQt",
+"QtQt.f.#.b.a.d.e.i.o.z#qjutPtQaKaMb3b3b4aMaMexbiaKfOgzh.#AdVjdjejbk5h6tRtStTbmaKeBtUdIdJdEiDesesb5b2b3cKbgbfbfbgd8dFn0d5bltVtWtXtYtZlKt0jca0.n.1t1t2t3aLd7dGeso2d8eTcGcQaKt4t5t6iOeO.#.#.d.da0cuQtQtQtQt",
+".f.f.f.#.b.a.d.enA.p.wpRt7t8t9blaMb2b5b2aMaMbibifkaJgA#O#hiwa0jWu.u#mFuaubmCaKfUucuddHeagkdad8b1b6cLb5b4cJbgbfbgcQb2b7dEh1aKueufuguhuikAm2nzujukulumaIfXb6dgdab4dacPfFcQaJunuoupbOeOQtQt.d.ccua1.fQtQtQt",
+".f.f.f.#.b.a.d.e#hnB#fuqur#YusaJaMb5cLb6bkaMbiexflblgBh#.r#6jcjXksutpuuuuvaKuwfWf1e.pyeUeseTjod8cLskb6b3cKcJbgbguxb3bYbYdac9uyuzuAuBuCuD.m.erPkpuEuFbleycLdgd8cQdadEfEcRuGuHuIrIbOen.c.c.cQta1a1.fQtQtQt",
+".f.fQt.f.b.a.d.e.f.G.JiL#x#OuJaHaLdJcMdddad8eyeUuKaKuLuMuNfwjcsFmfuOuPuQaLuRuSdJd8uTaMcReTkidccHb7uUhvdFhZd8cQd5dbb1b8bYb8b0cIfTuVuWuXj0uYuZu0u1riu2bfn0dIq8fHfed3b0fiaMaHu3u4u5bOen.d.dQt.fa1a1.fQtQtQt",
+".fQt.cQt.b.a.c.d.m.a.v.Z.5u6u7u8aKb8cNdedFd9u9eVdFaLv.v#vahOcuj.jWvbvcaNvddKdKdIvepxoAj4d#dad8d8vfd8dakjdEesesdab1b0bZb8b8bZb1bfuzvgvhvivjePvkvlvmvnaMcOdIcGfHvocFesd#aLvpvqvrvsiOeO.e.d.f.#ela1.fQtQtQt",
+"QtQt.cQt.b.bQt.c.n#2noe7lBvtvuvvblfEdIcNtLvwe.esdFfjaHvxvyvzlcjbcqvAvBdNblvCnKdJd8bVvDfXb3dFhWkiaMvEvFcRvGfFdJcLb8bZb0b1b1cHdbbgaKaJvHvIvJc4vKvLvMvNfHvOvPvQvofHiDdauxblvRvSvTvUiOeO.e.d.#.bela1.fQtQtQt",
+"Qt.c.dQt.b.bQt.c.AgN.z.D.W#evVvWaJqehWdIdHeadFesdFvXaJhdvYvZjfjXu#v0v1m#cSblv2obcRo6v3cRb1kjb1aMv4v5v6v7aLc9fFv8b8bZcHdbdbcIc#bgexv9aIgDw.w#wawbwcaKfHgib3wdfefHd3b4jBaJwewfwgwhiOkq.d.c.a.helcuQtQtQtQt",
+".c.d.d.c.b.b.fQt.zgN.zl3wigOlxwjaIc#cFq8dIdJdFeUeswkaLwlwmwnjgsVwowppLwqwrwsaIvNwteyesdaqfc#aMwuwvwwwxwytAaKwzdFbZb0dbc#c#c#c#bhgHwAaJaHhAwBwCwDwuaMwEwFiVwGiUgjeswHeraHwIwJwKwLiOkq.d.c.hiLelcuQtQtQtQt",
+".d.e.e.c.b.h.#.f###2.n#Hpp#BwMwNwOaMcKdEdJdJucwPeseswQaKwRwSwTa1jWelqkwUmEwVsDaIpxd9dFeCc#aKwWwXwYwZw0w1w2w3aLetb1b1cIc#c#c#cIhipAdFw4pHaLw5w6w7bfcRiTfdw8w9x.b3b3uxaLx#xaxbxcllmpmp.dQtiLiKelcuQtQtQtQt",
+".e.e.e.c.b.h.#.f.o.o.mxdxepp#yxfxgcaaMqeb7dHpyeBxhdFuRhfo#xixjxksFxlxmxnxoxpxqxraKcRgHxsaLxtxuxvhHxwxxxyxzxAxBxCc#dbcIc#dbcHb1d9dauweVdFhhesaMpxxDxEfHxFxGiexHxIvQkVxJxKxLxMxNxOmpmp.dQtiLiKela0QtQtQtQt",
+".d.d.e.c.a.b.#.f.y.#.fxPxQpQxRxSxTueaLffdJebf1cRveeFxUxVaKrLxWxXxYxZe8.Ox0x1x2x3kGblc8blhAx4x5x6x7x8x9y.y#yaybaHfTbfbgbhb1d9b1hio2d8ycdIecyddbcRxHyefHcKjCfHyfgVygaMpVyhyiyjykpjkqeO.e.d.biLelcuQtQtQtQt",
+".c.c.cQt.f.f.fQt.f.fQt.c.e.d.fylymrGblyncNyob3cRcRfXdHdIypblyqyrysjejSytyuchyvywyxyyp4yzyAyBwM.obxjVavr4yCyDyEyFp4aJaMdFe#escRcRbkdcb4b3b5b2dccKd8d8cQcRcQcQgjess0aKyGyHyI.veK.wQt.eovov.c.#.b.b.fQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtePyJyKlscRyLyMescRcRhzb8v8fEcRlRyNyOyPyQyRySyTu#yvyUyVyWyXyYyZsxy0r1y1y2y3y3y4y5y6y7gDbly8oboby9aMcKdcdcdcdcdcdcdckhfIvGdbdcdcdccRz.lPz#zaiLk1kb.v.f.ddVov.eQt.a.b.fQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtzbzczdzeaKygfJcLescQd#q8gmzfd8aMhAzgzhzi#szjzkzl.zzmznzozpzqk0xmjYsuzrbHzsztjWzuzvzwqCzxaIblaKcRcRdcdcdcdcdcdcdcdccQcQdcvGfIvGvGpxblzyzzzAm3kQg..a.a.#.c.d.cQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbOzBzCzDv4cJv8v8dJesd3b8dJdggkcQaKp4zEzFzGur.Sdu#8zH#1zIzJ#u.3.FjXsxzKzLzMtGzNzOzPzQzRkmdNaNzSbjdFb4dcdcdcdcdcdcdccQcQcQdbcQcQcQaKp4zTzU.fzVzWm0##.b.aQt.c.c.c.c.cQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtkqzXzYzZz0aKd8bYdIb8cGb0dFb7q8fEz1aLz2z3z4z5nfz6nez7l4l3.A.nz8kcjSksz9A.kxA#ks#i.RAaAbAcAdAeaKvwAfb2dcdcdcdcdcdcdcfIdcdbkhcQcQcQblAgAhAiAjAkpq#Ano.a.#.c.e.d.cQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQteOAlAmAnAow3aLcQb8bXgkb0daesdFb7dFApaLwlAqArAsAtAu.j#mxPxddSl4#H#kAvAwAxAyAzaXne.gf9AAABACADAEd8AFb3dcdcdcdcdcdcdcdccQdcc.jodcwHbdAGAH.xivzVdV.k.a.a.f.e.g.e.dQt.fQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtenAIAJAKALAMANaLvGb5hWeTcHdbdcd8das0wkaLaJAOAPAQARASATkpc2AUa8AVl4AWkxAXbtcv#mjwrPe9gbAYAZA0A1aLwHdcdcdcdcdcdcdcdccQcQcQwHc.khA2A3A4#L#x.fdrdr.Dno.#Qt.e.g.g.dQt.fQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQteOA5A6A7A8A9B.aIjAd8cGcPb4luwzwzwHeswArwB#blaHBaBbw#xfBcazBdBekaBf#pBgBhje.H.vlpkpu1BiBjBkBlBmBncQdcdcdcdcdcdcdcdcjocQcQkhdccQfIBoBppursBq.H.B.A.A.#.f.c.d.e.e.cQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtkqBrBsBtBuBvBwBxaJcResb7b5cQcRcRBybgbhhihibhbffToiBzBABBBCBDBEBFBGaW.ZBHBIe3sJBJBKBLBMBNBOBPkVifBQdakhcQcQfIdccQjodbdbdbdbdbdbdbbeBRmDBSBT#v.Fcve8.#.b.b.aQt.edu.g.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtmpBUBVqyBWBXBYBZB0aKc#hZfFnsd.kVcRbfbghie#dHeahibfblB1B2BaB3B4B5B6B7B8B9C.C#CaCbCcgIfpnTaLcResCdCedafIcQcQdccQcQcQdbdbdbdbdbdbdbbfaJefCfCgChl6.SCi.#.hiL.h.f.edudu.dQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtiOCjCki6ClCmCnCoCpw3CqcJdEdEdad8cKbfbghie#dHebead9pxpezSuGuzCrCsCtCus6CvB2CwlgaJblaLcRfHCxxHCyb3Cxd8vGdccQdbdccQcQdbdbdbdbdbdbdbbgCzblrvvxv1CA.b.U.f.a.h.b.f.d.g.g.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbOCBCCCDA6q1CECFCGtWCHaKaMnidadacFbgbghieUeadHdHe#dacRaMaMaKaLaLaMaKaMaMaMaMaMfZdjhWhvCICJCKwdiWfecQdbvGdbkhc.wHkhdbdbdbdbdbdbdbbhCLCMaJqDCNvVCO.CQt.f.#.#Qt.c.d.dQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtiOCPCQCRCSA6CTBuCUCVCWCXlYpxCYnsb5b0b1b1b1b1b1b1b1cFbWb4b4b1eTeTeUCZC0kIC1dFdFdFdFb7b7vPb3iView8C2cQdcfIcQcQjoc.dcdbdbdbdbdbdbdbbhcRC3uGaHC4C5C6C7.c.d.c.c.c.c.f.f.fQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtmpC8C9D.D#DaA6DbDcDdDeDfDgaIaLfIcGb8bZb0cHdbcIdbcHeTeThZfFgkbZesdFdJdIdIdJdJb7dFesb1jmDhDiDjieiefHfHdcvGcQcQdckhcQdbdbdbdbdbdbdbbhaLaLpdaIuVDkDl.GQt.cQtQt.c.c.#.#.fQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtkqjOi7DmpnDci3DnDoDpDqDrDsDtDuc9dEbYbYbZcHcIc#cIdbbWb1esesd8dcwzDvveDweBd9bio2j6BycKcKcKcIDxhxDyb3gjdcvGcQcQwHA2fIdbdbdbdbdbdbdbbgaMaKaKkGDzDADBlB.f.#.b.a.f.cQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtkqDCDDDEDFDGDHDIDJDKDLDMDNDODPjpblcIb0b1cHdbcIdbdbd8d8eTbWdccQcJc9aMaMcRaMbhbgcRcRDQcIcKcKfHDRDSifdabkpxaKblbdA3BobebfbgbhbhbhbgbfaKrFDTDUv#DVDW.A.f.#.b.aQt.c.d.d.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQteOeOeOeOeOenososawrRDXDYDZD0D1D2aIaMcRcQdaesesesb4cQcQcQcQcQb3vGcRaMc#c9cIcQd8d8h0bWb4d8b3b1yefis0z.blp4AgAGA4BpD3aJblD4cRaKaMaKt3p4egD5D6D7.Mg#QtQtQt.c.d.e.e.e.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.d.d.e.e.e.d.cgO.qiMD8tnD9pSE.E#EaEbaKaMd.qeeTd8cQcQcQdab5dJdFc#cJcJcJdbd3dEb9dFesb1jmvGetc#oAaKlPzyzTAhAHpkpuEcgDblC3EdaLaKEep4EfEgEhEicY.PcvQtQt.c.d.d.e.e.d.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.c.c.d.d.d.c.ck1#g#fdsxn#vEjEkElEmEnEoEpaKaMcQd#cPhZdhqpqQrgcMb3cQcQd8b2cGfFn0cPd#uxBybVoAEqpVyGz#zzzUAi.x#xrsErCfaGaJuGEsaKEtegEgEuu6.4.B.R.C.f.f.fQtQt.c.c.cQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.c.c.cQt.f.z.vEv#dEwExEyEzEAEBECEDEEq9EFcaaLaMcRcQdabZb5cQcQcQcQd8cQcQcRBnaLblaJoiEGEHEIyHzazA.fAjiv.fEJvZCgEKuQaHaIELEMENEhu6iJ.aEOfwQt.#.#.#.f.fQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.f.fQtQtQtQtQtqK#2.G.K.uBHrrgeEPEQERESETEUEVEWoHpftwp4aIaJblaKaLaMaMaMaLaKblaHaHEXEYEZE0E1xLE2yIiLm3zVAkE3#j.q#vE4E5E6E7uVDzE8E9F..2.aQtoN.9.8.#.a.#.f.fQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.#.#.#.f.fQtQtQtk1gO.#lJcY.7.6.GF#jJkMFaFbFcFdjGoIpgvmp5qqqRFerGFfszx#s#tMt4unuHu3FgFhlqwJxbxMFirck1kQzWpqdV#j.k.ztsa.FjFkFlDAE9aV.6.yFm.Tm0Qt.P.#.#.#.fQt.c.c.cQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.#.#.#.#.#.f.f.foE.QqK#2FngNno#2FoFpFqFrjPFsFtFuolphpJp6qrBjrirHsasAFvFwtNBCuoFxqSFyFzFAvUqzxNnDeKkbg.m0#A.k.D.Alm.C.sD8FBFCFD#w.M#g.m.j.RQt.flB.#.#Qt.c.c.d.d.d.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.#.a.#.#.#.#.f.f.m.D.n#h.DFE.m.BFFFGlVFHFIFpnYisoJoJpKmoqsqTjHrIFJFKFLFMtmFNFJFOFPvsFQwhFRFSFTeO.w.v.a##no.ano.Ae8FU.T.CFV.wlBlBqK.l.P.f.Q.PlBgN.#.fQt.c.c.d.d.d.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.#.#.#.#.#.#.#.#.f.fQtQtQt.c.c.ceneneOkqmpmpkqeOoKpipioKpjqUrjrjiOmpmpiOiOiObObObOiOiOiOiOmpmpkqQt.f.a.b.a.a.#.#.#.#.fQt.cQt.f.#.#.#.a.a.a.a.#.#.fQtQtQtQt.c.c.cQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.f.#.#.#.#.#.#.f.fQtQt.c.d.d.denenkqmpiOiOiOmpoLpjoKoKoKoKpjpjkqkqeOeOeOeOeOeneOeOeOkqmpmpmpeO.e.d.#.a.#.fQt.f.b.h.a.f.d.c.#.a.#.#.a.b.b.a.#.fQtQt.f.f.f.fQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.f.#.#.#.#.#.fQtQt.c.d.d.d.d.cQt.f.a.b.b.bno##.m.R.R.R.R##iLiKiL.h.b.#Qt.c.d.e.e.e.d.d.d.govdV.cQt.c.e.e.c.biL.h.#.cQt.b.h.#.#.a.b.b.a.#.fQt.f.#.#.a.a.#.fQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.c.cQt.f.#.#.#.#.#.fQt.c.d.e.dQt.f.#.#.a.a.a.ano##.m.m.m.m.mnoiLiKiL.h.a.#Qt.c.d.d.d.c.cQtQt.ddVov.d.c.e.g.g.d.a.h.b.#.cQt.a.b.#.f.a.b.b.a.#.fQt.f.a.a.a.a.fQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.d.e.d.cQt.f.#.#.#.#.fQt.c.d.e.c.#.b.b.a.#.fQt.c.c.c.c.cQtQt.fQt.c.d.c.d.d.d.d.cQt.f.#.a.hiLiL.b.c.e.c.c.d.e.e.dQt.f.fQt.c.c.f.fQtQt.#.a.a.#.fQt.f.f.a.a.a.f.c.d.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.e.g.e.d.cQt.#.#.#.#.fQtQt.c.d.c.a.b.a.a.#.fQt.c.c.c.cQtQtQtQt.c.edu.g.g.e.d.cQt.f.#.b.hiLiKiKiL.#QtQt.c.c.c.d.d.d.e.d.c.c.cQt.c.cQt.#.a.a.#.fQt.f.#.a.a.f.cdudu.dQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.gdu.g.e.cQt.#.#.a.#.fQtQt.c.d.da0cucucua1a1a1elcqcqcqjUjTj.j.rAcscsavava0a0cua1a1elelelelelelel.b.aQt.cQtQt.f.c.gdV.g.d.f.fQt.c.cQt.#.a.a.#.fQt.f.#.a.#.cduFWFX.eQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.e.g.e.d.cQt.f.#.#.#.fQtQt.c.c.cavava0a0cua1eleloMoMcqjUjTj.j.rAavava0a0cucua1a1a1a1a1cucucua0cu.b.bQt.cQt.f.fQt.gdu.g.d.#.#Qt.c.cQt.#.#.#.#.fQt.f.f.#.f.dduFXFY.eQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.c.c.cQtQtQt.f.f.fQtQtQtQtQtQtQtQtQtQtQt.f.f.f.f.f.f.fQtQtQtQtQtQtQtQtQtQt.f.f.f.f.fQtQtQtQtQt.f.fQtQtQtQtQtQt.c.d.c.c.f.fQtQtQtQt.f.f.f.fQtQtQtQt.fQt.c.d.e.e.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"
+]
+
+class DesktopEffectsDialog(QDialog):
+ def __init__(self,parent = None,name = None,modal = 0,fl = 0):
+ QDialog.__init__(self,parent,name,modal,fl)
+
+ self.image0 = QPixmap()
+ self.image0.loadFromData(image0_data,"PNG")
+ self.image1 = QPixmap()
+ self.image1.loadFromData(image1_data,"PNG")
+ self.image2 = QPixmap(image2_data)
+
+ if not name:
+ self.setName("DesktopEffectsDialog")
+
+
+ DesktopEffectsDialogLayout = QVBoxLayout(self,11,6,"DesktopEffectsDialogLayout")
+
+ layout17 = QHBoxLayout(None,0,6,"layout17")
+
+ self.packageIcon = QLabel(self,"packageIcon")
+ self.packageIcon.setMaximumSize(QSize(32,32))
+ self.packageIcon.setPixmap(self.image0)
+ self.packageIcon.setScaledContents(1)
+ layout17.addWidget(self.packageIcon)
+
+ self.packageText = QLabel(self,"packageText")
+ layout17.addWidget(self.packageText)
+
+ self.installButton = QPushButton(self,"installButton")
+ self.installButton.setSizePolicy(QSizePolicy(QSizePolicy.Fixed,QSizePolicy.Fixed,0,0,self.installButton.sizePolicy().hasHeightForWidth()))
+ layout17.addWidget(self.installButton)
+ DesktopEffectsDialogLayout.addLayout(layout17)
+
+ warningLayout = QHBoxLayout(None,0,6,"warningLayout")
+
+ self.warningIcon = QLabel(self,"warningIcon")
+ self.warningIcon.setSizePolicy(QSizePolicy(QSizePolicy.Maximum,QSizePolicy.Maximum,0,0,self.warningIcon.sizePolicy().hasHeightForWidth()))
+ self.warningIcon.setPixmap(self.image1)
+ self.warningIcon.setScaledContents(1)
+ warningLayout.addWidget(self.warningIcon)
+
+ self.warningText = QLabel(self,"warningText")
+ warningLayout.addWidget(self.warningText)
+ DesktopEffectsDialogLayout.addLayout(warningLayout)
+
+ self.effectsGroup = QButtonGroup(self,"effectsGroup")
+ self.effectsGroup.setColumnLayout(0,Qt.Vertical)
+ self.effectsGroup.layout().setSpacing(6)
+ self.effectsGroup.layout().setMargin(11)
+ effectsGroupLayout = QVBoxLayout(self.effectsGroup.layout())
+ effectsGroupLayout.setAlignment(Qt.AlignTop)
+
+ layout5 = QHBoxLayout(None,0,6,"layout5")
+
+ layout4 = QVBoxLayout(None,0,6,"layout4")
+
+ self.radioButton4 = QRadioButton(self.effectsGroup,"radioButton4")
+ layout4.addWidget(self.radioButton4)
+
+ self.noEffectsText = QLabel(self.effectsGroup,"noEffectsText")
+ layout4.addWidget(self.noEffectsText)
+ layout5.addLayout(layout4)
+
+ self.noEffectsImage = QLabel(self.effectsGroup,"noEffectsImage")
+ self.noEffectsImage.setSizePolicy(QSizePolicy(QSizePolicy.Maximum,QSizePolicy.Maximum,0,0,self.noEffectsImage.sizePolicy().hasHeightForWidth()))
+ self.noEffectsImage.setMaximumSize(QSize(150,80))
+ self.noEffectsImage.setPixmap(self.image2)
+ self.noEffectsImage.setScaledContents(1)
+ layout5.addWidget(self.noEffectsImage)
+ effectsGroupLayout.addLayout(layout5)
+
+ layout5_2 = QHBoxLayout(None,0,6,"layout5_2")
+
+ layout4_2 = QVBoxLayout(None,0,6,"layout4_2")
+
+ self.radioButton4_2 = QRadioButton(self.effectsGroup,"radioButton4_2")
+ layout4_2.addWidget(self.radioButton4_2)
+
+ self.standardEffectsText = QLabel(self.effectsGroup,"standardEffectsText")
+ layout4_2.addWidget(self.standardEffectsText)
+ layout5_2.addLayout(layout4_2)
+
+ self.standardEffectsImage = QLabel(self.effectsGroup,"standardEffectsImage")
+ self.standardEffectsImage.setSizePolicy(QSizePolicy(QSizePolicy.Fixed,QSizePolicy.Fixed,0,0,self.standardEffectsImage.sizePolicy().hasHeightForWidth()))
+ self.standardEffectsImage.setMaximumSize(QSize(150,80))
+ self.standardEffectsImage.setPixmap(self.image2)
+ self.standardEffectsImage.setScaledContents(1)
+ layout5_2.addWidget(self.standardEffectsImage)
+ effectsGroupLayout.addLayout(layout5_2)
+
+ layout5_3 = QHBoxLayout(None,0,6,"layout5_3")
+
+ layout4_3 = QVBoxLayout(None,0,6,"layout4_3")
+
+ self.radioButton4_3 = QRadioButton(self.effectsGroup,"radioButton4_3")
+ layout4_3.addWidget(self.radioButton4_3)
+
+ self.extraEffectsText = QLabel(self.effectsGroup,"extraEffectsText")
+ layout4_3.addWidget(self.extraEffectsText)
+ layout5_3.addLayout(layout4_3)
+
+ self.extraEffectsImage = QLabel(self.effectsGroup,"extraEffectsImage")
+ self.extraEffectsImage.setSizePolicy(QSizePolicy(QSizePolicy.Fixed,QSizePolicy.Fixed,0,0,self.extraEffectsImage.sizePolicy().hasHeightForWidth()))
+ self.extraEffectsImage.setMaximumSize(QSize(150,80))
+ self.extraEffectsImage.setPixmap(self.image2)
+ self.extraEffectsImage.setScaledContents(1)
+ layout5_3.addWidget(self.extraEffectsImage)
+ effectsGroupLayout.addLayout(layout5_3)
+
+ layout5_3_2 = QHBoxLayout(None,0,6,"layout5_3_2")
+
+ layout4_3_2 = QVBoxLayout(None,0,6,"layout4_3_2")
+
+ self.radioButton4_3_2 = QRadioButton(self.effectsGroup,"radioButton4_3_2")
+ layout4_3_2.addWidget(self.radioButton4_3_2)
+
+ self.customEffectsText = QLabel(self.effectsGroup,"customEffectsText")
+ layout4_3_2.addWidget(self.customEffectsText)
+ layout5_3_2.addLayout(layout4_3_2)
+
+ self.customEffectsImage = QLabel(self.effectsGroup,"customEffectsImage")
+ self.customEffectsImage.setSizePolicy(QSizePolicy(QSizePolicy.Fixed,QSizePolicy.Fixed,0,0,self.customEffectsImage.sizePolicy().hasHeightForWidth()))
+ self.customEffectsImage.setMaximumSize(QSize(150,80))
+ self.customEffectsImage.setPixmap(self.image2)
+ self.customEffectsImage.setScaledContents(1)
+ layout5_3_2.addWidget(self.customEffectsImage)
+ effectsGroupLayout.addLayout(layout5_3_2)
+ DesktopEffectsDialogLayout.addWidget(self.effectsGroup)
+
+ layout12 = QHBoxLayout(None,0,6,"layout12")
+ spacer4 = QSpacerItem(530,31,QSizePolicy.Expanding,QSizePolicy.Minimum)
+ layout12.addItem(spacer4)
+
+ self.applyButton = QPushButton(self,"applyButton")
+ layout12.addWidget(self.applyButton)
+
+ self.cancelButton = QPushButton(self,"cancelButton")
+ layout12.addWidget(self.cancelButton)
+ DesktopEffectsDialogLayout.addLayout(layout12)
+
+ self.languageChange()
+
+ self.resize(QSize(697,527).expandedTo(self.minimumSizeHint()))
+ self.clearWState(Qt.WState_Polished)
+
+ self.connect(self.installButton,SIGNAL("clicked()"),self.installButtonClicked)
+ self.connect(self.radioButton4,SIGNAL("clicked()"),self.noEffects)
+ self.connect(self.radioButton4_2,SIGNAL("clicked()"),self.standardEffects)
+ self.connect(self.radioButton4_3,SIGNAL("clicked()"),self.extraEffects)
+ self.connect(self.radioButton4_3_2,SIGNAL("clicked()"),self.customEffects)
+ self.connect(self.applyButton,SIGNAL("clicked()"),self.apply)
+ self.connect(self.cancelButton,SIGNAL("clicked()"),self.cancel)
+
+
+ def languageChange(self):
+ self.setCaption(self.__tr("Desktop Effects"))
+ self.packageText.setText(self.__tr("In order for Compiz Desktop Effects to work, the Compiz engine must be installed on your system."))
+ self.installButton.setText(self.__tr("Install"))
+ self.warningText.setText(self.__tr("Desktop Effects are a great way to enjoy a modern desktop experience without transitioning to KDE4"))
+ self.effectsGroup.setTitle(self.__tr("Effects Level"))
+ self.radioButton4.setText(self.__tr("No Effects"))
+ self.noEffectsText.setText(self.__tr("All effects are disabled and KDE Window manager is used.\n"
+"This is the default behaviour."))
+ self.radioButton4_2.setText(self.__tr("Standard Effects"))
+ self.standardEffectsText.setText(self.__tr("A compromise between usability and efficiency."))
+ self.radioButton4_3.setText(self.__tr("Extra Effects"))
+ self.extraEffectsText.setText(self.__tr("All effects are enabled. This setting may require a\n"
+"newer graphic card."))
+ self.radioButton4_3_2.setText(self.__tr("Custom Effects"))
+ self.customEffectsText.setText(self.__tr("Your custom Compiz settings."))
+ self.applyButton.setText(self.__tr("Apply"))
+ self.cancelButton.setText(self.__tr("Cancel"))
+
+
+ def closeButtonClicked(self):
+ print "DesktopEffectsDialog.closeButtonClicked(): Not implemented yet"
+
+ def installButtonClicked(self):
+ print "DesktopEffectsDialog.installButtonClicked(): Not implemented yet"
+
+ def noEffects(self):
+ print "DesktopEffectsDialog.noEffects(): Not implemented yet"
+
+ def standardEffects(self):
+ print "DesktopEffectsDialog.standardEffects(): Not implemented yet"
+
+ def extraEffects(self):
+ print "DesktopEffectsDialog.extraEffects(): Not implemented yet"
+
+ def customEffects(self):
+ print "DesktopEffectsDialog.customEffects(): Not implemented yet"
+
+ def apply(self):
+ print "DesktopEffectsDialog.apply(): Not implemented yet"
+
+ def cancel(self):
+ print "DesktopEffectsDialog.cancel(): Not implemented yet"
+
+ def __tr(self,s,c = None):
+ return qApp.translate("DesktopEffectsDialog",s,c)
+
+if __name__ == "__main__":
+ appname = ""
+ description = ""
+ version = ""
+
+ KCmdLineArgs.init (sys.argv, appname, description, version)
+ a = KApplication ()
+
+ QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()"))
+ w = DesktopEffectsDialog()
+ a.setMainWidget(w)
+ w.show()
+ a.exec_loop()
diff --git a/DesktopEffects/DesktopEffectsKDE.py b/DesktopEffects/DesktopEffectsKDE.py
new file mode 100755
index 0000000..4888d2b
--- /dev/null
+++ b/DesktopEffects/DesktopEffectsKDE.py
@@ -0,0 +1,149 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# Copyright 2007-2008 Martin Böhm <martin.bohm@kubuntu.org>
+# Copyright 2007-2008 Michael Anderson <nosrednaekim@gmail.com>
+
+import sys
+import os
+from optparse import OptionParser
+from qt import *
+from kdeui import *
+from kdecore import *
+# for adept batch launching
+import subprocess
+# for compiz-kde package checking
+import apt_pkg
+from apt.progress import OpProgress
+
+from DesktopEffectsDialog import DesktopEffectsDialog
+from DesktopEffectsCommon import DesktopEffectsCommon
+
+import gettext
+def _(str):
+ return unicode(gettext.gettext(str), 'UTF-8')
+def __(catalog,str):
+ return unicode(gettext.dgettext(catalog, str), 'UTF-8')
+def utf8(str):
+ if isinstance(str, unicode):
+ return str
+ return unicode(str, 'UTF-8')
+
+class DesktopEffectsKDE(DesktopEffectsDialog, DesktopEffectsCommon):
+ def __init__(self):
+ '''launches the app, draws the window '''
+
+ app = KApplication (sys.argv, "gd-test")
+ DesktopEffectsCommon.__init__(self)
+ DesktopEffectsDialog.__init__(self)
+ # bind the locale
+ localesApp="desktop-effects"
+ localesDir="/opt/kde3/share/locale"
+ gettext.bindtextdomain(localesApp, localesDir)
+ gettext.textdomain(localesApp)
+ # initialize variables
+
+ # self.action contains the action to be done after the user clicks "Apply".
+ # 0 - do not do anything
+ # 1 - disable effects
+ # 2 - set standard effects
+ # 3 - set extra effects
+ # 4 - keep the custom effects, or revert to the last known effects state
+ self.action = 0
+
+ # set the screenshot pictures
+ self.noEffectsImage.setPixmap(QPixmap("./data/noeffects.png"))
+ self.standardEffectsImage.setPixmap(QPixmap("./data/standardeffects.png"))
+ self.extraEffectsImage.setPixmap(QPixmap("./data/extraeffects.png"))
+
+ # set the translations & icons
+ # Apply
+ self.applyButton.setText(__("kdelibs","&Apply"))
+ self.applyButton.setIconSet(KGlobal.iconLoader().loadIconSet("apply",
+ KIcon.NoGroup, KIcon.SizeSmall))
+
+ # Close
+ self.cancelButton.setText(__("kdelibs","&Cancel"))
+ self.cancelButton.setIconSet(KGlobal.iconLoader().loadIconSet("cancel",
+ KIcon.NoGroup, KIcon.SizeSmall))
+
+ # check the state
+ self.check()
+
+ app.setMainWidget(self)
+ self.show()
+ app.exec_loop()
+
+
+ def check(self):
+ ''' checks the state and changes the UI accordingly. '''
+ self.installed = self.checkInstalled()
+ self.enabled = self.checkEnabled()
+ if(self.installed == True):
+ self.installButton.setText(_("&Remove Desktop Effects"))
+ self.effectsGroup.setDisabled(False)
+ self.warningText.show()
+ self.warningIcon.show()
+ self.packageText.setText(_("The Compiz engine is installed in your system."))
+ self.installButton.setIconSet(KGlobal.iconLoader().loadIconSet("remove",KIcon.NoGroup,KIcon.SizeSmall))
+ # remove, not install
+ self.rm = True
+ else:
+ self.packageText.setText(_("In order for Compiz Desktop Effects to work,"
+ " the Compiz engine must be installed on your system."))
+ self.installButton.setText(_("&Install Desktop Effects"))
+ self.warningText.show()
+ self.warningIcon.show()
+ # install, not remove
+ self.rm = False
+ #self.effectsBox.setDisabled(True)
+ self.installButton.setIconSet(KGlobal.iconLoader().loadIconSet("add",KIcon.NoGroup,KIcon.SizeSmall))
+
+ def checkInstalled(self):
+ progress = OpProgress()
+ cache = apt_pkg.GetCache(progress)
+ for pkg in cache.Packages:
+ if pkg.Name == "compiz-kde-kde3":
+ if pkg.CurrentVer is not None:
+ return True
+ # otherwise
+ return False
+ def checkEnabled(self):
+ return False
+
+ def cancel(self):
+ ''' action to be done after the user clicks the "cancel" button '''
+ self.close()
+
+ def apply(self):
+ ''' action to be done after the user click the "apply button '''
+ # if self.action > 0:
+ # if self.action == 1:
+ # elif self.action == 2:
+ # elif self.action == 3:
+ # elif self.action == 4:
+ self.close()
+
+
+ def installButtonClicked(self):
+ ''' Installs or removes the compiz packages. '''
+ if self.rm == True:
+ self.remove()
+ else:
+ self.install()
+
+ # check (again) if the package is installed
+ self.check()
diff --git a/DesktopEffects/DesktopEffectsKDE4.py b/DesktopEffects/DesktopEffectsKDE4.py
new file mode 100755
index 0000000..ca32dac
--- /dev/null
+++ b/DesktopEffects/DesktopEffectsKDE4.py
@@ -0,0 +1,146 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# Copyright 2007-2008 Martin Böhm <martin.bohm@kubuntu.org>
+# Copyright 2007-2008 Michael Anderson <nosrednaekim@gmail.com>
+
+import sys
+import os
+from optparse import OptionParser
+from PyQt4.QtGui import *
+from PyQt4.QtCore import *
+from PyQt4.QtSvg import *
+
+from DesktopEffectsQt4Dialog import Ui_Dialog
+from DesktopEffectsCommon import DesktopEffectsCommon
+import gettext
+
+def _(str):
+ ''' the traditional gettext function '''
+ return unicode(gettext.gettext(str), 'UTF-8')
+
+def __(catalog,str):
+ ''' selects a different catalog for the str translation;
+ useful when you want to use the standard KDE labels. '''
+ return unicode(gettext.dgettext(catalog, str), 'UTF-8')
+
+def utf8(str):
+ if isinstance(str, unicode):
+ return str
+ return unicode(str, 'UTF-8')
+
+class DesktopEffectsKDE4(DesktopEffectsCommon):
+ def __init__(self):
+ '''launches the app, draws the window '''
+ # needed for all Qt actions
+ app = QApplication (sys.argv)
+
+ # Qt4 explanations:
+ # self.qd is the link to the main QDialog (what you can see)
+ # self.ui is its UI (the UI defined in Qt-Designer
+ self.qd = QDialog()
+ self.ui = Ui_Dialog()
+ self.ui.setupUi(self.qd)
+
+ localesApp="desktop-effects-kde"
+ localesDir="/opt/kde3/share/locale"
+ gettext.bindtextdomain(localesApp, localesDir)
+ gettext.textdomain(localesApp)
+
+ # the Common class triggers some UI text settings, so we need to
+ # init the UI first
+ DesktopEffectsCommon.__init__(self)
+
+ self.radioGroup = QButtonGroup(self.qd)
+ self.radioGroup.setExclusive(True)
+ self.radioGroup.addButton(self.ui.noEffectsButton)
+ self.radioGroup.addButton(self.ui.stdEffectsButton)
+ self.radioGroup.addButton(self.ui.extraEffectsButton)
+ self.radioGroup.addButton(self.ui.customEffectsButton)
+
+ # connect signals and slots -- we have to do it ourselves in Qt4
+ QObject.connect(self.ui.installButton, SIGNAL("clicked()"), self.btnInstallClicked)
+ QObject.connect(self.ui.done, SIGNAL("clicked()"), self.done)
+ QObject.connect(self.ui.apply, SIGNAL("clicked()"), self.apply)
+ # connect radio buttons - methods provided by the Common class
+ QObject.connect(self.ui.noEffectsButton, SIGNAL("clicked()"), self.noEffects)
+ QObject.connect(self.ui.stdEffectsButton, SIGNAL("clicked()"), self.standardEffects)
+ QObject.connect(self.ui.extraEffectsButton, SIGNAL("clicked()"), self.extraEffects)
+ QObject.connect(self.ui.customEffectsButton, SIGNAL("clicked()"), self.customEffects)
+
+ self.ui.installButton.setText(_("Install"))
+ self.ui.warningText.setText(_("Desktop Effects are a great way to enjoy a modern desktop experience without transitioning to KDE4"))
+ self.ui.groupBox.setTitle(_("Effects Level"))
+ self.ui.noEffectsButton.setText(_("No Effects"))
+ self.ui.label_6.setText(_("All effects are disabled and KDE Window manager is used. This is the default behaviour."))
+ self.ui.stdEffectsButton.setText(_("Standard Effects"))
+ self.ui.label_12.setText(_("Some simple effects."))
+ self.ui.extraEffectsButton.setText(_("Extra Effects"))
+ self.ui.label_14.setText(_("You\'ll need sunglasses"))
+ self.ui.customEffectsButton.setText(_("Custom Effects"))
+ self.ui.label_16.setText(_("Use custom settings from another settings manager. Switching from this option to another will back up any custom settings"))
+ self.ui.apply.setText(_("Apply"))
+ self.ui.done.setText(_("Done"))
+ self.qd.show()
+ sys.exit(self.qd.exec_())
+
+ def check(self):
+ ''' overrides the DesktopEffectsCommon.check() method, does some painting '''
+ DesktopEffectsCommon.check(self)
+ self.ui.packageText.setText(self.pText)
+ self.ui.installButton.setText(self.ibText)
+ if os.path.exists(os.path.expanduser("~/.kde3/share/config/compizasWM")):
+ compizasWM = open(os.path.expanduser("~/.kde3/share/config/compizasWM"))
+ state = compizasWM.readline()
+ if state == "standardeffects":
+ self.action = 2
+ self.ui.stdEffectsButton.toggle()
+ elif state == "extraeffects":
+ self.action = 3
+ self.ui.extraEffectsButton.toggle()
+ elif state == "custom":
+ self.action = 4
+ self.ui.customEffectsButton.toggle()
+ else:
+ self.action = 1
+ self.ui.noEffectsButton.toggle()
+ def apply(self):
+ DesktopEffectsCommon.apply(self)
+ if self.action == 1:
+ print "hi"
+ os.popen("kwin --replace &")
+
+ def showWarning(self):
+ ''' shows the warning box if the package is installed '''
+ self.ui.warningText.show()
+ self.ui.warningIcon.show()
+
+ def hideWarning(self):
+ ''' hides the warning because the package is not yet there '''
+ self.ui.warningText.hide()
+ self.ui.warningIcon.hide()
+
+ def enable(self):
+ ''' enables the radio boxes, compiz is installed '''
+ self.ui.groupBox.setDisabled(False)
+
+ def disable(self):
+ ''' disables the group box, you have to install compiz first '''
+ self.ui.groupBox.setDisabled(True)
+
+ def close(self):
+ ''' triggers the QDialog to close '''
+ self.qd.close()
diff --git a/DesktopEffects/DesktopEffectsQt4Dialog.py b/DesktopEffects/DesktopEffectsQt4Dialog.py
new file mode 100644
index 0000000..e7a698e
--- /dev/null
+++ b/DesktopEffects/DesktopEffectsQt4Dialog.py
@@ -0,0 +1,225 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'data/DesktopEffectsQt4Dialog.ui'
+#
+# Created: Wed Mar 12 21:46:04 2008
+# by: PyQt4 UI code generator 4.3.3
+#
+# WARNING! All changes made in this file will be lost!
+
+from PyQt4 import QtCore, QtGui
+
+class Ui_Dialog(object):
+ def setupUi(self, Dialog):
+ Dialog.setObjectName("Dialog")
+ Dialog.resize(QtCore.QSize(QtCore.QRect(0,0,744,512).size()).expandedTo(Dialog.minimumSizeHint()))
+
+ self.vboxlayout = QtGui.QVBoxLayout(Dialog)
+ self.vboxlayout.setObjectName("vboxlayout")
+
+ self.hboxlayout = QtGui.QHBoxLayout()
+ self.hboxlayout.setObjectName("hboxlayout")
+
+ spacerItem = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Minimum,QtGui.QSizePolicy.Minimum)
+ self.hboxlayout.addItem(spacerItem)
+
+ self.label_2 = QtGui.QLabel(Dialog)
+ self.label_2.setObjectName("label_2")
+ self.hboxlayout.addWidget(self.label_2)
+
+ self.packageText = QtGui.QLabel(Dialog)
+
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.packageText.sizePolicy().hasHeightForWidth())
+ self.packageText.setSizePolicy(sizePolicy)
+ self.packageText.setWordWrap(True)
+ self.packageText.setObjectName("packageText")
+ self.hboxlayout.addWidget(self.packageText)
+
+ self.installButton = QtGui.QPushButton(Dialog)
+ self.installButton.setObjectName("installButton")
+ self.hboxlayout.addWidget(self.installButton)
+ self.vboxlayout.addLayout(self.hboxlayout)
+
+ self.hboxlayout1 = QtGui.QHBoxLayout()
+ self.hboxlayout1.setObjectName("hboxlayout1")
+
+ self.warningIcon = QtGui.QLabel(Dialog)
+
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.warningIcon.sizePolicy().hasHeightForWidth())
+ self.warningIcon.setSizePolicy(sizePolicy)
+ self.warningIcon.setObjectName("warningIcon")
+ self.hboxlayout1.addWidget(self.warningIcon)
+
+ self.warningText = QtGui.QLabel(Dialog)
+
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred,QtGui.QSizePolicy.Maximum)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.warningText.sizePolicy().hasHeightForWidth())
+ self.warningText.setSizePolicy(sizePolicy)
+ self.warningText.setWordWrap(True)
+ self.warningText.setObjectName("warningText")
+ self.hboxlayout1.addWidget(self.warningText)
+ self.vboxlayout.addLayout(self.hboxlayout1)
+
+ self.groupBox = QtGui.QGroupBox(Dialog)
+ self.groupBox.setObjectName("groupBox")
+
+ self.gridlayout = QtGui.QGridLayout(self.groupBox)
+ self.gridlayout.setObjectName("gridlayout")
+
+ self.hboxlayout2 = QtGui.QHBoxLayout()
+ self.hboxlayout2.setObjectName("hboxlayout2")
+
+ self.vboxlayout1 = QtGui.QVBoxLayout()
+ self.vboxlayout1.setObjectName("vboxlayout1")
+
+ self.noEffectsButton = QtGui.QRadioButton(self.groupBox)
+ self.noEffectsButton.setObjectName("noEffectsButton")
+ self.vboxlayout1.addWidget(self.noEffectsButton)
+
+ self.label_6 = QtGui.QLabel(self.groupBox)
+ self.label_6.setWordWrap(True)
+ self.label_6.setObjectName("label_6")
+ self.vboxlayout1.addWidget(self.label_6)
+ self.hboxlayout2.addLayout(self.vboxlayout1)
+
+ self.label_5 = QtGui.QLabel(self.groupBox)
+
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label_5.sizePolicy().hasHeightForWidth())
+ self.label_5.setSizePolicy(sizePolicy)
+ self.label_5.setPixmap(QtGui.QPixmap("/usr/share/apps/desktop-effects-kde/noeffects.png"))
+ self.label_5.setObjectName("label_5")
+ self.hboxlayout2.addWidget(self.label_5)
+ self.gridlayout.addLayout(self.hboxlayout2,0,0,1,1)
+
+ self.hboxlayout3 = QtGui.QHBoxLayout()
+ self.hboxlayout3.setObjectName("hboxlayout3")
+
+ self.vboxlayout2 = QtGui.QVBoxLayout()
+ self.vboxlayout2.setObjectName("vboxlayout2")
+
+ self.stdEffectsButton = QtGui.QRadioButton(self.groupBox)
+ self.stdEffectsButton.setObjectName("stdEffectsButton")
+ self.vboxlayout2.addWidget(self.stdEffectsButton)
+
+ self.label_12 = QtGui.QLabel(self.groupBox)
+ self.label_12.setObjectName("label_12")
+ self.vboxlayout2.addWidget(self.label_12)
+ self.hboxlayout3.addLayout(self.vboxlayout2)
+
+ self.label_13 = QtGui.QLabel(self.groupBox)
+
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label_13.sizePolicy().hasHeightForWidth())
+ self.label_13.setSizePolicy(sizePolicy)
+ self.label_13.setPixmap(QtGui.QPixmap("/usr/share/apps/desktop-effects-kde/standardeffects.png"))
+ self.label_13.setObjectName("label_13")
+ self.hboxlayout3.addWidget(self.label_13)
+ self.gridlayout.addLayout(self.hboxlayout3,1,0,1,1)
+
+ self.hboxlayout4 = QtGui.QHBoxLayout()
+ self.hboxlayout4.setObjectName("hboxlayout4")
+
+ self.vboxlayout3 = QtGui.QVBoxLayout()
+ self.vboxlayout3.setObjectName("vboxlayout3")
+
+ self.extraEffectsButton = QtGui.QRadioButton(self.groupBox)
+ self.extraEffectsButton.setObjectName("extraEffectsButton")
+ self.vboxlayout3.addWidget(self.extraEffectsButton)
+
+ self.label_14 = QtGui.QLabel(self.groupBox)
+ self.label_14.setObjectName("label_14")
+ self.vboxlayout3.addWidget(self.label_14)
+ self.hboxlayout4.addLayout(self.vboxlayout3)
+
+ self.label_15 = QtGui.QLabel(self.groupBox)
+
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label_15.sizePolicy().hasHeightForWidth())
+ self.label_15.setSizePolicy(sizePolicy)
+ self.label_15.setPixmap(QtGui.QPixmap("/usr/share/apps/desktop-effects-kde/extraeffects.png"))
+ self.label_15.setObjectName("label_15")
+ self.hboxlayout4.addWidget(self.label_15)
+ self.gridlayout.addLayout(self.hboxlayout4,2,0,1,1)
+
+ self.hboxlayout5 = QtGui.QHBoxLayout()
+ self.hboxlayout5.setObjectName("hboxlayout5")
+
+ self.vboxlayout4 = QtGui.QVBoxLayout()
+ self.vboxlayout4.setObjectName("vboxlayout4")
+
+ self.customEffectsButton = QtGui.QRadioButton(self.groupBox)
+ self.customEffectsButton.setObjectName("customEffectsButton")
+ self.vboxlayout4.addWidget(self.customEffectsButton)
+
+ self.label_16 = QtGui.QLabel(self.groupBox)
+ self.label_16.setWordWrap(True)
+ self.label_16.setObjectName("label_16")
+ self.vboxlayout4.addWidget(self.label_16)
+ self.hboxlayout5.addLayout(self.vboxlayout4)
+
+ self.label_17 = QtGui.QLabel(self.groupBox)
+
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label_17.sizePolicy().hasHeightForWidth())
+ self.label_17.setSizePolicy(sizePolicy)
+ self.label_17.setPixmap(QtGui.QPixmap("/usr/share/apps/desktop-effects-kde/extraeffects.png"))
+ self.label_17.setObjectName("label_17")
+ self.hboxlayout5.addWidget(self.label_17)
+ self.gridlayout.addLayout(self.hboxlayout5,3,0,1,1)
+
+ spacerItem1 = QtGui.QSpacerItem(20,40,QtGui.QSizePolicy.Minimum,QtGui.QSizePolicy.Expanding)
+ self.gridlayout.addItem(spacerItem1,4,0,1,1)
+ self.vboxlayout.addWidget(self.groupBox)
+
+ self.hboxlayout6 = QtGui.QHBoxLayout()
+ self.hboxlayout6.setObjectName("hboxlayout6")
+
+ spacerItem2 = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
+ self.hboxlayout6.addItem(spacerItem2)
+
+ self.apply = QtGui.QPushButton(Dialog)
+ self.apply.setObjectName("apply")
+ self.hboxlayout6.addWidget(self.apply)
+
+ self.done = QtGui.QPushButton(Dialog)
+ self.done.setObjectName("done")
+ self.hboxlayout6.addWidget(self.done)
+ self.vboxlayout.addLayout(self.hboxlayout6)
+
+ self.retranslateUi(Dialog)
+ QtCore.QMetaObject.connectSlotsByName(Dialog)
+
+ def retranslateUi(self, Dialog):
+ Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Compiz Desktop Effects", None, QtGui.QApplication.UnicodeUTF8))
+ self.packageText.setText(QtGui.QApplication.translate("Dialog", "In order for Compiz Desktop Effects to work, the Compiz engine must be installed on your system.", None, QtGui.QApplication.UnicodeUTF8))
+ self.installButton.setText(QtGui.QApplication.translate("Dialog", "Install", None, QtGui.QApplication.UnicodeUTF8))
+ self.warningText.setText(QtGui.QApplication.translate("Dialog", "Desktop Effects are a great way to enjoy a modern desktop experience without transitioning to KDE4", None, QtGui.QApplication.UnicodeUTF8))
+ self.groupBox.setTitle(QtGui.QApplication.translate("Dialog", "Effects Level", None, QtGui.QApplication.UnicodeUTF8))
+ self.noEffectsButton.setText(QtGui.QApplication.translate("Dialog", "No Effects", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_6.setText(QtGui.QApplication.translate("Dialog", "All effects are disabled and KDE Window manager is used. This is the default behaviour.", None, QtGui.QApplication.UnicodeUTF8))
+ self.stdEffectsButton.setText(QtGui.QApplication.translate("Dialog", "Standard Effects", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_12.setText(QtGui.QApplication.translate("Dialog", "Some simple effects.", None, QtGui.QApplication.UnicodeUTF8))
+ self.extraEffectsButton.setText(QtGui.QApplication.translate("Dialog", "Extra Effects", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_14.setText(QtGui.QApplication.translate("Dialog", "You\'ll need sunglasses", None, QtGui.QApplication.UnicodeUTF8))
+ self.customEffectsButton.setText(QtGui.QApplication.translate("Dialog", "Custom Effects", None, QtGui.QApplication.UnicodeUTF8))
+ self.label_16.setText(QtGui.QApplication.translate("Dialog", "Use custom settings from another settings manager. Switching from this option to another will back up any custom settings", None, QtGui.QApplication.UnicodeUTF8))
+ self.apply.setText(QtGui.QApplication.translate("Dialog", "Apply", None, QtGui.QApplication.UnicodeUTF8))
+ self.done.setText(QtGui.QApplication.translate("Dialog", "Done", None, QtGui.QApplication.UnicodeUTF8))
+
diff --git a/DesktopEffects/__init__.py b/DesktopEffects/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/DesktopEffects/__init__.py
diff --git a/data/BlankEffects.ini b/data/BlankEffects.ini
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/data/BlankEffects.ini
diff --git a/data/DesktopEffectsDialog.ui b/data/DesktopEffectsDialog.ui
new file mode 100644
index 0000000..7392d29
--- /dev/null
+++ b/data/DesktopEffectsDialog.ui
@@ -0,0 +1,483 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>DesktopEffectsDialog</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>DesktopEffectsDialog</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>697</width>
+ <height>527</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Desktop Effects</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout17</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>packageIcon</cstring>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ <property name="pixmap">
+ <pixmap>image0</pixmap>
+ </property>
+ <property name="scaledContents">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>packageText</cstring>
+ </property>
+ <property name="text">
+ <string>In order for Compiz Desktop Effects to work, the Compiz engine must be installed on your system.</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>installButton</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Install</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>warningLayout</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>warningIcon</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>4</hsizetype>
+ <vsizetype>4</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="pixmap">
+ <pixmap>image1</pixmap>
+ </property>
+ <property name="scaledContents">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>warningText</cstring>
+ </property>
+ <property name="text">
+ <string>Desktop Effects are a great way to enjoy a modern desktop experience without transitioning to KDE4</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>effectsGroup</cstring>
+ </property>
+ <property name="title">
+ <string>Effects Level</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout5</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout4</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>radioButton4</cstring>
+ </property>
+ <property name="text">
+ <string>No Effects</string>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>noEffectsText</cstring>
+ </property>
+ <property name="text">
+ <string>All effects are disabled and KDE Window manager is used.
+This is the default behaviour.</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>noEffectsImage</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>4</hsizetype>
+ <vsizetype>4</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>150</width>
+ <height>80</height>
+ </size>
+ </property>
+ <property name="pixmap">
+ <pixmap>image2</pixmap>
+ </property>
+ <property name="scaledContents">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout5_2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout4_2</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>radioButton4_2</cstring>
+ </property>
+ <property name="text">
+ <string>Standard Effects</string>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>standardEffectsText</cstring>
+ </property>
+ <property name="text">
+ <string>A compromise between usability and efficiency.</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>standardEffectsImage</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>150</width>
+ <height>80</height>
+ </size>
+ </property>
+ <property name="pixmap">
+ <pixmap>image2</pixmap>
+ </property>
+ <property name="scaledContents">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout5_3</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout4_3</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>radioButton4_3</cstring>
+ </property>
+ <property name="text">
+ <string>Extra Effects</string>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>extraEffectsText</cstring>
+ </property>
+ <property name="text">
+ <string>All effects are enabled. This setting may require a
+newer graphic card.</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>extraEffectsImage</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>150</width>
+ <height>80</height>
+ </size>
+ </property>
+ <property name="pixmap">
+ <pixmap>image2</pixmap>
+ </property>
+ <property name="scaledContents">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout5_3_2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout4_3_2</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>radioButton4_3_2</cstring>
+ </property>
+ <property name="text">
+ <string>Custom Effects</string>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>customEffectsText</cstring>
+ </property>
+ <property name="text">
+ <string>Your custom Compiz settings.</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>customEffectsImage</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>150</width>
+ <height>80</height>
+ </size>
+ </property>
+ <property name="pixmap">
+ <pixmap>image2</pixmap>
+ </property>
+ <property name="scaledContents">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout12</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer4</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>530</width>
+ <height>31</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>applyButton</cstring>
+ </property>
+ <property name="text">
+ <string>Apply</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>cancelButton</cstring>
+ </property>
+ <property name="text">
+ <string>Cancel</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+</widget>
+<images>
+ <image name="image0">
+ <data format="PNG" length="1887">89504e470d0a1a0a0000000d4948445200000020000000200806000000737a7af400000726494441545885b5976b6c14d71580bf999d7dd9bbf6627bf162136c2041d03a813885b850c0a19153d1a6aa286a09fc71a5a4adda2849a5fe68a5280912adaaa60d2869a30a50a8948241495d8aa19050102aa2a6c1061bdbb163037e2d6bb3d8fb7e8c7767e7f6c7ac1f0b8660a5bdd2d13c567bbfef9cb9736606e63044232ed1c81ba291a068e4c09dbf6b4770a50ff3c6c45f70cd65de0785d78b4682a2e5512142db8568b28a833f63f31df02ba9a3c522b49fcecbbb28fe5f82fbc5bf960a11fa8910e21742889784e85d2b82efd302e4694770a51bb8a235af1342bc2d52976bc5ed3fe0f5bd45f5e7cd2fdd075c0bbc4e61452d8f6d85927220968d04a4553873987397623ffdda23bc20556e5865aad901048110a9ee4b844e9d89f6fba9abf90d171f58403452091c20afb49615db60d11a209a8d181007610888beab643a5ba0a216a5a63e0b0f021148c798e8f98cd03f2f120ca47fb462177bef2b9005bf8ed959cfc3df87e5cf1913e5c0b302713fe2d219f47008212964a422cc6bb723173b8010e8515013a0c649fb46b9d5f41f466f6bafaedecdafee149067ecd7535253cf33a761f9f34006d06744061241683d85387d1861b1637a7213cafcf9984490f8b13d64c6fa0115b414a427209dc2ecb4e2a9abc2536adfd5f6320df713f8b31eea8e900e65e133221d879e3370763fc4c3485f5a835cf108982d60b5a114cfc33adf49e4e841d48e8e29b8b19d40b14894ad2fa7709e79db85e7f9e0ea8fa76fd32901690b039a1a7e9bee3fe6667ffd347cb413865aa06c09781681cd6ec0150b586c60b56359e0c6b9fc21c21f9f2771b57786842122a351b9de45f942656b34c911c004a0641b4a3bd006fc5e1f6c7a49aed854406210ba0f423a022e37e4bbc096678027e1e6ac80ae836c42c97350b4a18af1e66e127d5e4a6a2a21352d911c53898c66e8f2d30c5402d7a5ac403d855510ee04086176b8c824c1ee84fc02b0e619705b9e91fdcce3914163c1994c201ba16b829b475b30e79bf1ac764332417234c2b533612e0e8a9d3f3c491330008ccbd2167e1088f121e8f0cc71d8f4ae8b05d9fe61b14d673a9975ceb10dcc7960352ec364c8054eca9fdb88b039b97ef406315f6c5678ce6dd8b1879f572d75bcc9fa57a1d009adfbd1bd5d489e0a2467e18cacedc6d69a074a318c0d82160193325581a96a984cf4fdee38f1c100e934516f88a67c196fbecc4846a34d6468cb6944c3fb7871a1c7fe0e353ba0c4857ebd85f427e731afa8422e72e7c22d05209543a40f32c13bc00a91ce617c7fbd886237e17eac0499345a3841a83f86f78a4a4623dc17e29b7775c2f6dd7cbbaa9cbf53fd14b2a71cadf753d4f6abd86b6a30957a8c32dbf2419e8f48b9497d7602eb52f79440e2c62d6e9dbc8c1649b0a06e050e8f0d9271b46018dfbf47b97929c2c09838f4db76f6b58d139af559903e2c894c1a4c55d52825c5683e1fd1d66eec4faec6f6e89711ba0db5a317b5e30262228175d9322c2bd7e03b749689b118eeba6ae6ad2c87640c923146ce5e67e8f430370399a6f77bd87774001fe0077cb30aa40e2b4229c827e98f23b98ab02f29431b0b10b8e2c5beaa8accc8207a340c80ae417c0c26543bf336acc5bdf909d023908c3176ee53868f7793f02739d4cbf6773be9cd2e3e1f90ca59843387da6015d67237421744aedd46cfc8989d56242d45c4974408b016801a0635e9a070edb798b7711d26bb0a04887677e3fde0222238cec29556daff1663c331be02740389992c6536011d13d8f39190285ce9241549920a2451e3022d9d424b66480421a381b37a03265729c9a19b68713fb73e3a8b3ae4a5acba00f7463720c868b1c9a91377b26617102663a14946812c7607160f38902896408ba5484f94a005ae911c6b21d5d9c2f8701c5d03d76207a54f2f01218cc010bdd7b887800c76c78c0b2465f78d138add81a23c04c5119c0f0b1050fa5531036a9c33b602a1cf51404b024a01983353559896c8eecb36a34a53c0e98c7345c4bde9f71298180fb7852e74ad726d5a0d569193fd9490b041262f37e3bb64262b3147015de3a9e18efe0f93b7c35f2fddfa0de412ebf48f93029a0d445e4ea9efca3a0dc1b6e07d05eef9520a985a5fe1484959d17717ee7816d95300b294fd8b049a0bd2fdcc5a7e35833a18a3ebbd4ff0f7f87d2de3bcf55a3be780d6b9080070ee05f6780a2d2f576cdb82edf11546cb45022c206ee456209942ed0b70a3b11d6ff340743841c33b3d34b40719078681d09c05004e6ce7954545d6dd4b776cc7beea71e381848ef15415104fa00df9193a79951b27bb188cb3370b0e61b4dc5b18af59778d071200f8c7f778b1d8c2af176f7ed6e9fece0eb0cb10ed411b1864e8d42586cef7301a4a3535f4b3ef98171f30723ff09c0500fef4341bab5c342daead7396ad5fc748f3597a4f34138ca65a0f5c6367169cd3eb3f6fcc4900a0a18e9a52331f2b669b3310565b2ff8d9fb6617ad181f0f030f0afe42e3972b59b07b35af014f00cb00e7ff1d3acb30c117ff02fe2f0f8e779b06e96c8c0000000049454e44ae426082</data>
+ </image>
+ <image name="image1">
+ <data format="PNG" length="1421">89504e470d0a1a0a0000000d4948445200000020000000200806000000737a7af400000554494441545885d5975d6c145514c77f776667f6b3ed6eb76cbb9b5d4a294a2d05317c2bd2184404da0a41242a51e189a0848444a306a244e39b823ef84222890f44239a182a1a1334f1a3044b7421e189ef60c1d0164adbfd9aeecef56166b74369a12d51e34dfe99b37b67cef9df73ffe7cc5c21a5e47f393a5ba8eb58c5744001c464fd28937928d9ca1eb7c2f980c6b98e55bc077826eb4b9de8039d2dd4690a5f856683b71acc1e9696697cf3eb357a80c244fd4d98b5ae7040f540f4710baa07d626f8082863120b9a1081642beb0434170317890434e67ff2084f035e26a88709111082bd9e6a082d99030b3b616127a12573f054c3ec10bb807240fb4708245bd923a036b6428169bb41895898b69bd80a05b742b47d396f02be89f81dd79e75b650e752385039074fd59a8d50fd22202de83174df1586ae9c46bb4e83cfc5f7c7bae9669c821c17819767b24ff3b228f14c19eaac0f39f6db55dadb3b3971e22cf9bc49e2fe87f1685f723369b8633ae14fcff11d90b359de1b813f5a794c15ec8d2c53285ffe2ad7f30b387a348910024551e8eaea21188e13991a42def805f9270d8d414e7ddbc559207f37ff77dd2b45b0570f4164f50ca85c47363b08809412d33401e8ebeb83ca754456d7a387606115bbb104e9ba2702c956360b7830da22a0e6155075745d22a52c11304d937058075587e856a22d02afcacc83cb7809ab2cef1863ccc9536d0415c107fe7a285fb20c02f3802c55551aaa2ac9e7f325c4e33e200d8179942f5a80bf1e1a2b78a32d4182bb94e598044cc9db4030febc0fa6bc00420259204b6d6d198661601806c1a086db3d0464401420b289f8733a8aa06c5b03af037eeea0b5510974b650a708765435833e6d25e80920650521432ca691cd66c9e572c4629a3d970206c01d45af7d94aa668879d9b4bd8126c0cd181d725402bac201d50b91b630543ce10890020649241432990ce9749a1933742b30fd360620d44ca43580ea8567eb781f088c9585db0894fafd06506b9683ab6cd83103c020a1508e5048924aa5a8af978ef97ee006b8bca8358b886eb8fb7be2b6321182bd9e04849a6bc03f1fb83e0a579378bc40a160027d584daf000c010690077f23a1659df4fcd8cf6c935dc0d758cdc970c6bb252dc956f62882a7a66e05bdee49705562ed7bd64606480359eaea04b366b9f0fbb3a5adb1ae69cb163950153ce1cb0c7450b6268ee7e0057eb609c8db089c6a2388e0b3caa578aad64c05df5cdb598ea2f8acdf192085ae674609eeb407c0e5460ff630d49d45bb4ac3e53487cef4731347872ce5d594ec73f9a888ac17e0bbcf4e7daf0da7ddcb91239758b9f2248b17ffcefefde7c7b8b7cf82af86c87ad0fc94ed6ce41d4694a50a8e7edf06e54ba2a08547a43eed408a2d5bfea2b7378b61187474dc64ed5a93f2f2e1f9e16ca5413151bd06d230906768680a72f24817e78a5970012882b7f429106ed1400f003d36b7d1aa54924e0f924a99140a054cd344ca82bdad05c0b4e1b0dd3ae116851b3f99cc1d6227f083ad852135d9ca6645b023be1dbcd303a00ac7ca8bc2730a3043286470f8b0413e9f67fdfa21366ecc95c4793b72200c144da2474c32c7883557d37be8124960489c6ce362a089dae9ef025480706195ab13d2be9aa52c0cc31c6163af5ede0a6965e4fc2eb87e8aab0bda59085c7309a855fd903a0d4229a64d8028f60c67efb0ab47ca922d4b2977fe3f32f8f0fdaa1fdc0a51acafe83e57b6c0c71c675bff71106a1614b5145c3889388e70d249a408216e0984fdcabee5a3c8362f0cf20596c01401785e6be2a12a370f18262e534efe98359e71ba8f2b9f5fe4127003e81636133756afd6b88773de3887c4ead91920e7dce822997f6394942bfeebe3f9dfdeac06dfae15d7560000000049454e44ae426082</data>
+ </image>
+ <image name="image2">
+ <data format="XPM.GZ" length="55092">789cccbd47b7eb38b2ef397f9fa2d6e5ecae5e7cf266d0035266cb6da7ed77af1ed07b2f1aa9bf7c83883f704c56d5cd7c75bb5f95d6c9ca5f8a22114044202200f0fccffffcdbe7d3fddffef37ffe8fea625c02eb6f966f947ffb4fbb4e92ebfff57fff9fffcffff88fe160f0b7fecf68389bfe6df41fffc7fff80febf96fd6df9401ff5fcff64232ffde36244f7a762ac953fefd56f29cf35cf2a267f3072ff9f733c906e7836493f35eb2c59fd74ab6797b1f243bfcfb46b2cb7fef0a1e72799c5af2907f7f94cce5732cc963fefd483297cf3a8387d43f992999ffde0c25f3dfb79a64de5f662099dfcfe924cf386f24f3fe4a44ff0fd17e5b327f9e772799dfcfb8078fa87d662499cbebbb9249de6fc9bcbd9d2f99dab795ccc7b31a48e6e3b71a4ae6e315ed25f3f1b04f82a93f0dc1636a9ff32999daf32599f757a54ae6fde17e48e6fae23892b97e78a2bd63ea1f438cef849e97e892f9f7652b99b76f3d91cce53763f0947e6f08fd9c1137b664de5e43c83fc7f53bf0022cf475499c8be719c4f113d824de5cc01671fd0eb6895dbaff50d8ab174ae6f2ad3ac9a47f63c924df4832d73f732a99f777f324998fb73993ccfb5f7f96ccc7df3a49e6e3514592b9bd3aa664ae1fd6bd646eaf9a2b98f4ddf52573fdb58e60d89f6d49e6df9b13c97c3c1d45326fbf634826ffb2934cfee40086fdf88164de7ff65232d9eb9b646e1fa607867e9bbe641a8f816092cf14f2423f4d070c7d8b9f25f3e7bbaf60e89fb791ccfb3b15df43ffe22f30f42f13f240ffea1b18fab716bf877ee967b043dc92bf1f0ea16fdd9af3a8f740bc3dbe64f2f70bc9bcbfcd2fc9bcbfbd4432f90b4730f5cff55e3297bfc9c0187f732899f4772099c6e35b321f7f6b0fc6f8daa6649aff7692f9f3724d32d7f7cb4932ef6ffb4e32e9b302c6f86723c9dcdefc50326f9ff32e99f7975382a10fd75c32d7e795906742fdd3bd49e6df67a2bdd09ff20886beb89164fefcd54932ef9ffa2c98fca72bda0b7d6a9f25f3feb0c4f842bf9a07b0d02fd13fd0afe2090cffd6c660e85b24ae87be05a40f63e1df8277c9bc7debab643e5e575732efef6e2799cb1bfcf89ecbdbed2573fd5cfd781e1fcf952d98fa3b91cf277f74cd24f3fe0f3ec08807ba8d64ae9fc54232e98f27993faff9f13df787ae680ff4d57995cce57103c95c7fac3bc97c7c7c5f308d67b8028bf9f72299cbd3dc49e6f2981f92797fd69664de5f7e2499dbb33b92ccdb6f2dc1d067772099fca72e99b7ff6a49a6f946f437f4b9bd48267934b0d0ef77c9bc7dad68df9cee9fee25f3fe69447fcc31df88f1843eaf6e92f9f3da89649a0fee25f3f1cb85be41ff0331bed07f5f8ca7f0a7d43f13a1df9d2a99f777f32899dfffea80111faeae92b93cee41f090f7effa0c463ce77f48a6f9ee51321fafeb4930f547bb01433fecb164fe7cff5b321f2f2f92ccfb3f93d793bd745b30f421ae2593bfd94be6fd1b2692b93cde4e32b79fda164ced8ddec1d017e74332f9dbb564de5e772899e299140c7dcaa692b93db8df92797fe61d18fe3117e303fd59b792e979b164de3f8918ff05f5cf46f40ff4c715e301fdb9bd80e13f57f792797fad4a30fce906bf17f3f51ae331c4fc19a13d43f89780e693a9f0a7ed028cebfd4e321fafe6198c7cc00b2473f9bc77c95cdf4a4ff0908fc75a5c8f78bfb52553fcf02999ebbfdf08a6f10e5ec1c2bfdc49a6f97c2b99e6ff27c9642f3fbee7fab416f2407fc299643efe912f99ec692099cbd3b492b9bc9ab8ff94c63711fd0bfdb2a792c93e2ac9140f689229df5125f3feed5660e85ffd2a99fce34432efdfee00867e5e14c9941f8ec0d0bfcc904cf9572a99b7a76e25f3fe73c760a1afaa646ebf99e85fe86f2ec61bfaea0b79e11f0ba12f2eda8bfb4b7d267b98897c64dd81a1cfeb503297afbd934cf1d45e30fc93f81ef363b896ccefbf3a4a26793dc1149fae7d30f247ff2a99ea1d3fbee7fed68b05a31eb1924cf9c2083ca5f6076bc9542fd948e6fa900e2473fdbbbc09463d630246be1a6692f9f84481643edef95532b73f5df01cfd7993ccdb7be92453beb5924cf3c14432efbf5cfc7e01fffa2999e6bfb1646e5f9b022ce2cba364de3e37114cfec132c0d047f74d32f9e37b30f26b2f05431f5763c9bc7f42c1d04797e6cf99d0c71be41fc21fa52a18fe24207d9f0bfd5a1d04d3f8570fe009d573dca3642e7fbb054f697ca237c1246f3a944cf53a5b32c5a72f60f81bd796ccaf4f2bc994af2d2593be6f2453bea682e7345eed4e32d5ff14c9bcbf2f57c95cff7dd15ef8a35097ccdb93cd25537e2bfa6b3124fffd055ec2bfcc24537c548045fe518331decda7647ebd2eda6ba37fc478c01f6d44ffb8d43e1ded17e3af3960cc97f5022cf481e257a6dd149fd96bf08cc6ffe64aa6f92604c35eec4032b7efab2799e2375b30e94b2aae5f50ff58aa642e6fe148a67ce1065e927fb80d2553bd2494cc9fdf3e49a6fc45c863c07e1dc97cfcd3a3606a5f7d05633e887682497faf4bb08df8e2030cfb2bc9de17a2ff4bf49f886762f4cf10f666bd80618f3e8dff92f5177f5e914be6ed2f36e005c91b5f24533cf22598ecafeec04be467ae64f28757b041bfaf5f040f29fe68c0268d9726da63917e14a2bdd0c7f424998f5f44fdb314fd91bf83a18f8105467fdc4660e86783e789fee94a30e215e3118c78a3a0f9dc60fd45fa34072f491fc329d8a0f685a964aae7dfc0265d5f2f05537f568f60d86bb091ccfbe36248e6fad988dfbba85f8e24533e48f66f88fe892b30fa67634ba6f97508467f6d1cb0a827435ed11f35fa6388f9c9a7f8c814f157fd065e92fe5f6e6083e42f5cb0897ac417d8227dca3fc036f55fb305431fba77c1747f3b02bba4df3ad9ab29e42f669229df46fb647fe460d8d3aa0243fecd2758d4bbefc0a21eb403a33f2a8a772c263f6fff35055ba827d1f85aa2bf2f1a58f4f70a8cfb252a18febdf1c0f02701f58f2dda7f5d48a6fe9b8071fff21d2cfc83603caf51c1b87fb106433f4b1a1f87fd17eebf1b17ec903efbd43e46b0f71a0c79cb2d58c4e72d18cf2f1bb078be0dc6f3339abf5cd11f8906c6f5de1a8cf846e3f6c1cbe724df068cf6548964ae3f1b130c7f9096608c7f7603a3bde90e8ce7bb2f60b4d77e00c39f075c9f98f639e47fa34832d7e7f84c2c9eb7ba80216ffb08c6f3cc042cd64f1a30e42f9760d88fe382d19e1ced19c11e42aebf0cf17cd306435ecb04a33d610e16f20b16f1470a16ed3981457cf9443c82bdae2660e19f79bc341c8be7d70e18cfd71ec022df8ac178feaa05e379d72bf108e3df70ff369cc8fe1d8345bc9c81d1fe60452cfaeb7a03c3be74ba7e2adbd382f1fbcb3b18e3910dc1689f4df24e657fd4603cafb2c168bffb0cc6f32b1ebf0c67e2fe01e9d34cdcef1283e12faa6f30ee67f860e1ffe660a1efdc7f0ee7e2fed58c58b6e70cc6ef8d002cd6173db0a83f2dc0d0b78edbf77021e5bd078bf6aec1f87d41fabd14f2155bb0f8fd108cdfeb2330da93de83f1fc8ac6d310f2ac1a309ed772ff3734c5fdb48d64ee0fb72e58d4e75ec0f87d7202a33f0d713df4a5237bb7e4782a60b11ee681d15eed112cee1782a1cf158f4f86b6b8bf6581c5fa2af5a733823f762d30eed7d2efdd11f2efcd1d18d76bdc5e468311f2a3c007e379f5082cea75f760e8fbfa8d782cf49dfba3d150fcbebc030b7bdc83a17f099faf472371ffe64c2ceed73460e883cefb6b3416f7ab4fc463e10f2c30e46b8927e279b94b2cee6f6cc1d087ec092cec4930c6f342f24f85fc46442caef75660e8cf85fb93d18cfd9ec783f1162ceaa37cfe19cdc5fd3ceabfb990d79d80d13eeb152cd64fe9fa85f8de7c05a33df9188cf66cbec0d0c7f50d0c7df3b8ff1f2d85bcce002ce227078ceb1d0f2cfca54e3c41fb6f74bd21ef5780f17c5d058bf53beeaf46e618ebd77a2299c77f5bba9f25c6b7f4c1c2bfbd80d19eeb07f104fda1933cb678de2603e37eba01c6ef6f57b0a8ff71ff3d72c6a8b7e8d47faee88fb507c6effd188cdf3bdc1ec67d38c739e2e3c5a63393e21723269e60fde4f22c99d677b93e307577285eb7b8fd8f27ecfe9cf50e0c7d8a79ff8ca7ec7bfefb6b412cc627db81c57e823730ead9eb1158d43fb8bce399b8fe7a0716eb5d7330c663c3fb733c67eda1fa484d2cc6c39a83a11fed193ca57a651282b13e16f3f96ebc9860bdc8d880c5fe810c2cf21bae8fe3e544d4cb23c93c5ed30a30ea071b170cff92d0f81813d443d71730eaed9a07c6f53eb7b7b1c9bee7fa117c49a6f5024b30c5b3760cb6b19ec9e3adb13331e8face93ccfbaf3883f13c23013ba8a72e05d3fd0d1b8c7c734df23b53d8df86facf9da03e7e1b80f1fc82f7e76430813e6d63e229fa3be5e333194e4cd40b52b04ded31b8fe4e4653110ff2fa0a73a736f28d9a788afd67fa180cfd6a1db0588fe3fe7f32610accfb77c3f59721f2c77c493cc5fe0aaf00e37eb731788afa4e059ed1f8361f60d48f6dde1f93d914ebc7460a46bd2fe4fd37994fc7940f6cbec1e89f98cf5f93a578def5013c433d86da6f4c51bf09b9bd4dcce982f2b39cebcbc49a22fff6b83e4dec29ea15d95932adb704c433acffebf43c776ad1fd039d7886f5d315bf3f5356f09acf77d3d1d4a5fa65734f3cc3fe035d134cf7372c30ec355b824dc413dc3fb0e9906574dcdf79c4e2f74501c6fa5b74104cdfb73c3e9d4ea6d6887f7fdb10b3e791bef1f9940ddf1ceb078fe005f5b7c5e7e3e96c86f58f8d0246fd3a76c1f311f9b377b043e31bf07c693a9fa1de19df816dec07f804bb584fa3fe5accc47a86069e517b82002cd6f775b043f39bc6e3dde9923d8eeb7332035bd47f3705ec60ff824d3cc7fecf84ebefd498c19e2faf609bfa2be6f9f0d49c2d51cff5c016e5fb2b176c8f78fb8b15d8a5fa99c9e7d7a93543fdab1b831dfafde6287844f5d10e8cf1af49bfac39c63bff024f499e98ee6fb3fb937f7d023bd4fed407bb435aafb124d37e2d5d30b53f03cf87d43eeb0d8cf5dd7803c67cb7e1f63d75587f707df1e9fece7c30a2fd5d7b30f6b3469f9269fdc792cce5594dc1587fba52ffb84c1edebecd5e326f7f41faebceb19f2cda8271bfa6133ca2e727e0118d4fb2164cfa9c2892f978af4c30eca1f1c19321d7bf2bff7e3660e34ff5e53bb043cfaf5dc174bf6c0076a97fdb929805acfcfb6d0446bdbee4ed9f0d857eddd660f89b6e2298da5f05c4ac3f687e6bc0c311ad87e07a263f9f0fda77f094da537f8067245fc5f569369a1963d29f2b31eb5fdabfe20ba6e7a777e0d188ff3eb9815906c29fa78227d04f053ca3f6b65c3f6663260fd553a93d2cfca4fec91bc95cfeea041e517f5fb8fece2662fcdd023c86ff33c1d31167cd06cf21cf5c308d679d8017d41f0df72fb3e9cc1ef3ebab14ec8c69bfc05432ed47d38885fe5d4cc9b4fe37028fc8fecb37c9649f25784cf6ebbf82e7f47dbc042fe87e05f5cf4ce8936b82e7f4fb36113ca6f17a002fe8f986b8de80fe8bef4dd28fc292cce52fa68269fc4d1effb0db2f49decd0c0c7fdc92fe2ce6131a3f6d2d98fcb7bf02cf49bf370330d68fea5a30fdde38831dfabea3fe59b2fea178b0009bd41e4f03db23aeff37713decb5f00593fc2df5a7c1ee47eb6f2330eadd17156c8ea87ff7609bfc45590b267f78d5c02e714bfa6ab2f1207ff80136c87ef22918f34dfe06c67cd186c48b018dafcee3cd99c5ee47faa48217647f99609bf4c7a0f1b2160392afa3f6da6cfc68bcd69279ff949f6093daef4ec1f067f5817831a4e76de8f70ebb9ece177c806d6abfb3235ec0dfba2bc9b4df9bc6d7ed1376ae5f5c3fe703263f6f4f520a1e53fc99102f66d4be8cf7cf7cc8e4e3d7673e784c7cdd82a7d4de5a03c3fe751e9f3265c2fca09be009d94fc2e397394b87c99f186bf08cfa4fe3fd3b9fb0e7717dacc792e97c0b8f5f58f8bb20d6793d613e5f2cc7b49fc5005bd49e35b56fb1c4fcecf1fe9e2fd9f7743dfdde582ca83f8267b049ed59f3f9686eb2eb69fd782699d62fa83de67244f67de1fa3eb79643b237ef2698f4ab9e8347d4feb0008fc99e1c6a8fbd70d05f4762261e6f9f46e3e730a6f3160618fdbbe6f9c6dc5d0ea8bd0df5bf6b88f89aebdfa25f00a5f8ff4e32edd749c0636aff66019ee17939780e7de2f92a73f643e8bb031e537b7c133c237bf5dec073ba7f44f71f1a225ea3e78f447f79dfe011ddcfe3f22dc68c29feff06e379ba0e9ed2ef0b1effb1747d44f3b1fd0d5ed2f78d0236c65cdf367c7e5fb0009858bf07cfd15f7bf082f4a3492473f96f19d8257b6df8f82e66cb05f55fbe223630ff6f797cbc98b3f67079527afe82319d17e1f6b7581a03fafdc693ccc7d7a0fb194b97da7bbb111b63f2af1bae9f0bd31810eb7cbd61612d1dd2bf94da671943c8cfe7af856d8c69be6e0563be594f2573fdd7b8bd2c1c763ded0f53c01392c7bb4ae6fdd3717d5db8c684fa4bbb134cdfa767f094e28180fba3e5c080fff15fc0b309f5ef9764d24ff13dfc43cae7a3e5d0807d6cf8782d47acbdfcfeed0b783ea1fad50ebca0ef6f3ed82079a32f30f2c5644f6c627f5acce7df655fd0e1e3930460a662dc3f1cc14beaaf40133ca178a8069bf47cdf90ccc74ff3c10e8de78dfa676c8afd09b564daff5982b1ff36a6f64c58ffd2fed40b7836a1fac504bc9c50fd6101c6fc97abc426e2b3700fc67911f3018cf33ac99d643e1edd198cf3176e07463da4fa0063bf8826be47bd53e7fe773965e345fded806db217eb1d8c78f29612b3f6923ea9603cbffb0663bf4949d7b38083c663b3022f68fceb7bb043f6118682a9ff8c02ec92bfcbe9fe7dba49f5c30d18fb636c9e2f2ce7ecf7144f2a6097e4bbe5c4ecf7140fcdc0b0b734018bfde03a784af3c53504cfb15f47dc0ffb0bbb8160ecbffc002fa95e58edc1d8bf1a4dc1163d2f36c1a8575495609c5f1a4aa6f3a134febd83e2ed2f376093faafa3e72fcc01f1f50b3c217ddd5660ac37ad63f00cfe5407cf69beef5230ea35c6026c60bfe55532e55b39d8a4eb6f73b0d8df20ee6f637fe04a32cdff03b043fd757b904cf9d9168c7ae7ed2299ce7b3692697fc898d8c2f99ddb128cf3b317f49f85fa6348f75f1a06d9afb604c37ff817b04dfa1c0ec10ee9bb4ef22ecd015d7fdd8047345eb5079e907e598e60d2d7b40363ffe3762598e2d5750e16e703d692297ffc128cf35768af897afb36108cfaee5c32d56b0f9269fe2e24f3f61731d880ff5125d37ed80558ac974c25d37ec09d64de7fe64132f73fea27d8a2f15732c9b4bea008a6f655a23fb1dfb28c24d3fe470d8c7ae1ed5132e95b2099cf8fa6e82fd4e3c32fc9b4bee3125b38ef7723ff641816d99b7d03dbe48fc22bd8a1f9f95a825d9adf4af28706eb1ede5eaf060fe97aaf133ca1fc5605237e6d8ee009e5bbd5198cf58b4efc1efb6fb71730f67bae66e025c5df8a09c6fecae020998fafd248a6f3ba909fd93b6f4f71025bb0af52329ddf9849e6cf533fc036e993924ba6f96726993f2fcec00ef57ff12e99e2c34a32ed7f0cc1f017d5bb649aef7cc9bc3f22f13c97fa4fc3f859388f5a6d25f3f69443c1d86f3b06e37c4be54ae6edd354c9bc7dd791643aefdc4aa67acf2b18e7f134f13dced325a4ef26d3379affc95f9826e2cb952a99c6f7153ca57835fd0463ff691108267fb579028b78c2001b34dee14532bf7f62814df88b4832d52f2ab085f59d0118eba3752899ecff2699eae307c9b43fb405431f9454329d2fbb97ccdb938cc02ee95b2adaebd2f8b590dfc279e448974ce3f12998e67b4d30ce074713c934ff403e0be72d2dba9fc5e607defeca014fc85f5413f094e2313b954cfea0114cfe467901233fd41792a99e6a49a6f527c198afd71bc9549fb9822dea8fba944cf9502799dad782b17e6d7592c9be6782495fea42321fdff8c7f77cbcb477b043fa1deb9229ff4904e37cc697641a7f0decd27828aa647abfc45032ade7b982495f13b25fcbc2fb0c944032d9cb93606abf5949a6f314cf60bc4fc00a24f3f6b79960d29f5a914cf11dfa53d87bf82999d6df303e16ceb755a4cf369b3fc8ff7660ec3f57de04933ff0f760ac5f665bc114df2b67c1a44f57156c507f5f1cc9b49ff3198cfdc69bab60aac7ac4f601be7fd22c1781fc95132ddaf95ccdbabd492b93e794f60e883229e87fd9ef959326fbf3a964cf9e00318fe5d9d4be6fda192fed916ce83a92f92a93dbe64ca8fd11f229e4c6f92f9f3938164ca1f4f82b1fe994ae6df871f60acf79a6bc9bc7f62f49785f3b1b75230d95775914cf30bfacfc279b22df90f47c413a621995f9f7be011f99b6d2b98e2136d021e4f683d63059e4cb83e7ae2fa19dd4f3b83e734df943118f581f22099cba33c8397549f592dc026d69b8f9279fb6f9f60e453d6156c537f5a63c9644f8160aa47695330fc8dee0aa6e7c5b964f28791648a6fe692297e580aa6fa6628da8bf8c3bc974cf9642118fa38954cf58f89649acf1692e93c27e9936361ffbdd149e6df2b9e609c1f7d96ccf549ad24d37974e887d0676721998f8fba924cf1fa9364b247713df687754f92e9fc672399ea45a23d581f35af92f9f7b9f81eef13885ac1181f4b32d5dfa10f16f6a3044bc974dee9158cfd3f892399fcbb2d993fff26fa6786fd3ba23f711ef146d7bbcc7e283f7b944ce7995ec0639aafab25784af671db0a9e52feb200cfc9fe320f2cec650f5e52beae7d49a6f319e2fe4bd457766083f453bf80b11fa878154cf6b2adc1585f37c4fde0af235530f251717fc45b9e90d7c17ca848a67add5530ad1f74a160aa8f76e279c8e7c34630f97f3b174cf2379a645abf247fe35a781f90ff2818f3c1443297571d49a67cfd4930cd87da1b58e8ff5630ece74b32cd1fa564aaef7982697dc87900633f73694ae6faa0be4aa6fd789a648aa724637fd25a32ed3f79924ceb3d3330f6f325ad64de1fd98364927f2598facbd42553fd3594ccafcf311e16cecbdf22c95c5e652a99de7f267e8ff3c9e1bb641a6f4732bf3efb008bfd812f92297eb32473794b31bec87fa30a2ccea3ee0493ff30f79269bfe23718f53e6b2099ea0377609c7f34be2453fc7b914cf91c1f2f63c0e6478a0fb6e019d58be207c1538aff8fe039e503712b99e6eb5c3297a750c04b1afff22618fb1922c1347fc73bc9b47f4630f2f9eda360b2efab2e98fcd1ea158cfd83452598f47f6b48e6cf8feec1a8b7a40bc1f05f3bc9bcffb61918f596f85d32d5e3447fbaa48ff94030f6ffdc24737bf267c416f6a7ac3f2453fe580bc67e99122cceeb9c24533d6b2299f4ad108cfce30773fd500cc9341f7792a9fe6b0ba6f5da6b2399ce372ec1d85f1d9d25f3efd59b60f89f3bc9bc3fd4a364f22f6f60ec97543792797fa8a960d8c74d32f9932918f61ed49269ff832d99e44d24f3f61a23c1d43f96fc1ef1fe1c8cf763448e645a3f16cfc3fe3d632899e2955832cdafd01f0be7d5ad4a32ad9f3792b9fcc64030ced3d792b93e9723c9b41feb02c6fe67732b99f68b7c4aa6faa3180f9c17f6499ffa032dc46bf098ec5d8f24d3fe08133ca1f530ed049e527eb7f50593ffb83c48a6fd570a7846f7d36b30e6fff25b32d5ab73c1145f28ef82299ed1e660d473b64f92a9def92698fcdd5a3cdf46fd24914cfbcd74c9b43e21e445fda611f7437cb1fe124cf65edcc02edd3f7225d3fb001e05d3fc5ebd108b7879bb93ccfbc72f05937e66a9605abf538e92493f56e021d99f6249a6fa5b2b98fc9f72914cedc3785a789f52f12698e42943c964ef17c9e40fe792697e1849e6f2648e60ac470660bc9f243b4aa6fd3fa1647ebda20826f9d24c32ef0ff55e32d5d7447f60fe2f9f25933f5a4aa6f8e62c18f9502299f40ffa61e1fd4b4a2899f6279492495ed19e29e297028cf795048d64dedef05530e29137c9e47fe4efb19f740cc6fed152134ced0f55c9fcfb488c17dedf74b9934cf64dfa3c326754ffab0cc1643f510ac67a78ba04633e77466083ecb309c026cdffa921998f476582b19fa7ba0aa6f93e5e0ba6fca6188051bf4b447bb1bf4aff00237ff60f92e9fd41f792e9bc7d2599e6f717c1d8cf247e8f7a5d160ba6fecf23c1b4bf21a0f86264e13c72f82499f2fd57c1f06727c954bfcec098df755b30d9ef7a2e98ecdf78974cf54cb447d47b3d5330e2cb0fc9b4df47dc0ffbd12ea9647a9fec1e2cde07f92e99f60b1c05239e3e4ba6f9df974cf9d74932ed9ffff17b2e5f70014f90ef288261df8664b25f5332bd6f0ae36be1fc4ef92499f22d4b3297ff593c0fefb7525dc9e4df3c30de5fa53a9229feb12553bc2ec66f46f2565f92c97f37609ca7b4df25d37e825a32adff89fba39eaafb92293fea24f3ebb7627cb13ebbfd944cfbadbf2453fe37154cf287a664d257d15e715e80fa6fcce673f2af117846f94076075e503d2188c1d88f9a9b82c91f2457c954cf38832df2279ba9647adfe70a8cfaecf62098e2ef6e2699ce27ed04533cb2d5c0d8efaa3c09a6fa46f12199ec5d3c0feba51dcd9f63517f5dbd0886bd3f4be6d76f7f30d59b62c164afde5432d5271f2453bdf0118c7abd77124ced4f1ac914afae2553bd5edc0ff3b9f32498ec6d1308a6f66c55c9341fdd83313f9ba23da8ef46a564dabf664aa6fd21f27b8a37e291643abfe249a6f9ce174cfb13a2028cf78b25b9647a1fd4a364f20fdf92c97f0c25d37a512599d607a03f22bf375ac994ffa49229ff78944cf94a2618fe48fe1ef59e4632bd3f270163becf2ac994bf8beb71fe4b0d2453bd27964cf552d13fa807da2f9269ff612499e627d13ed40f424330b55f13d763bfc6ed4332c50f37c1f0f78a64daff3d964cfb43c578637daf7a138cfd39429f719e6745fa30314df21f590ec6fedd32134cfbb10c5d30f98bcb8b64da2f3c01dbd87fbc174cf5c92001e37c4d25eee760fff1b7605a0fc8b792e9fc81b8bf43f149740263ff68fe2a989eb722fb9c8878201849a6f75f9e25d3f37cc974fee15532bdaf752898ecdd0904d37a475080512faf7e30e9432e18e7f56e82914f5482c91e0bf13ce4ff7e2698c627fb924cebcfe2f7d8ff1b3e80719eaa934cfaee3992491e717ff80f6f2699f22ff13dcecfa753c9e4bf0e92293f394aa6fd139660b2cfc8904cf9df4230e68b4a32add78bf1c0feda740ec6fbebcab3648a8f2792c95fd492299e1848a67ccd164cf25b2d58f887ab64f2379d64de3fea4132bd6f4efc7e8e7827944cfb7f1e2553bd4f134cfa6c799269ffb6781eea8df14432b57f2718ebe591645a2f8b05231f15bfc77e0f652699e229f13cbc7faa9a4ba6f361427fb03f5013fa8cf5e2c495ccbfd73dc924af180fec0fd33e24737922f17c9c6f6cc91ea626f69b5e13f082fccfe64d32d547bfc0385f565ec0886fba1cecd07a663394ccfb237b05633d627b144cf6779949a6f75fd682c93f06349f4dc5fa433d154cfaace982697d721b4aa6f3c11918f585742299fce5bd64aa67958229be5ac560ac27ac12c178bfd79b64da0ff1e37b7adf95fc3dcef70592a95ebb174cfe3a10cf47fda01c08c67e1b5f32bdcfb0134cfde12a92493ed17f585fc81f25d378dc49a6f8e253308d57249e3f417c7a904cfbcd7e30c5d382b11e982592797f24df82b1de954ba67aa6907f4af69baec138af6c8d24533d692f99ea733bc1e4ff3c0b2cde37be944cfe712499f2b1b964b2675732c52bd0670bfb45d54832e58fba64da0fb301e3fd8d4a2499d67f857ee0fc72f82d99be5f81713e3e194aa6fd49e27e588fb89ec1884fae13c9d4ffa27fb0bff0229e67537fae481f66e612fb2d776083ec3debc026eaa53618f18a3b0323fe580f04d3f5c98b64da7f63825df217852e99ce77907c33113f6c4dc134df6f1f24d37c9982b17ee04f05537b9a77c9148f88dfa3deb07a92ccfb7f73168cf365778229be48bf25537d19f28bf501e55e309d4fc94f92c97fcec158cf2b12c1e41fbb4fc9b43e3d104cf3f7f6158cf87ebb170cffe448267942c1e47fba05187f1f455049a6f5614330f4ff0d8cf3b88ab83fde3770d94ba6fafc12bca0f6a557c1c80f6dc9644fb964aa7f1492a99eb1934cf3f718bc44fd632199f2ab67c914bfd782518f16e389f78346a23dd8bfa58c25d379ba4030c95b5f2453fc5c824deacfec2299f6eb6c25d37ae74630e2b94632ad170bf9b13fb87b964cf514713df61bd4aa643a9f0f7bb31cecbf10fa28f6e3f89269bd83e2adb9399f52bd33032fa6fcfef9086cd07e8d95f81eeb1b97a964b2bf0dd8a2f958ff02dbb41fbbbb825d9a3f2eb5608a3fe28560caafb6141fcd45fdb11a83b11e180f05d37e5c5f114cfe669d8051ef6f3dc1a40fab108cf3d9e55a30ce3b1a60d4d78bab649a5fe5f7645f978364dededbb360f247452899ea616730d6e7d6779269fdfb4330f9bbd4148cf8e7058cf5b8e44932bdffe25e30f6835c24d3f9d1b964b27f713decdd16ed9b937fd2f792a99ed2082679a247b0380f33964cf3ab18af05c52f57d1df381f5baf2453bcff0046fcacfe60daaf6a4aa6f9ed4b30ce7fce25d3fedd1918f65f8af1c37e6d4f954cf9cf5a32c927fa17fbede254326faf22aec77c1bd582a9fd971d58ecef3524d3fe5ea1bfd84f97d1f82ec47a83be124cf5c8ca07dba4efbab8de9df2dffba44f0b51afeb5cc1747d32154cf61eecc043ccf74f9269ffd3098cf7495c1e25d3f9c14a30ad9f281f92693de2001ee3bcf34430e94f71114cfe259883f17ef6b52599de2f36144cfaa23c4aa6fafd188cfa79d60a267de832c1345f1786649a3f7e30cd97a2bdc86ff55232c54fb9648a6fc4f367e44fbaa1649a5f669269ffb7f87e4ef6915f2453beaf4ba6f9443c1feb655a2c99e47b944cfb532493ff6bef25d3f86ec1e2bc532318ef1712fa82f3cdc55e32b5ff1b0c7b5acd25d3df9fa04ba67ac25e32bd0f44b4cfc0f95ad13f787f759c08c6fb8f34c9141f6e2453fee80b46fe22fac7c2fbafef24933f17fa8efdf9590dc6fb8d4a8a079626ceb3d513b04bfa5a527cb664f645eb65067848f359fd8369bfec063cc27ae45532d5e31f25f3f15c3d83315f5d12c9544f740553fe1e6592a93f3dc158bfb88127145ffb9560b2873a96cce5d75f25537ce90ba6fa62f283a95e2ae49bd2f82b0f82c93ef385645a6f17ed453d39984aa6fac04c32fdfd5607c1a42ff14a30cdb7b74232e5a76f60e483fe5132cdafb960c4fb5f60c4aba52218ebaf7b30d69fb6e27b9c1f0ceec1d82f962b92c95f1d24537da7148cf93d05239f534f92e9bc8bb81fcefb1547c9544fabc1383fe68af1c67e92f807d3fe43213ff6af7662fcb19fdaa37cc410f5ebfc5e30cd1f6b07ecd2f85a347e06332faa8f1cc0d0efdb17784cf6e91a82499ff44ff004eb318f92693fdebd649adf5f05937efa67c1347fe91618e7bb6e7782112faa60ac8736a1601a8fac00a31ee98c05e37d155bc1347ff8aa647a1fc009bca0f1f21682c99f9ae2fe0b6acf360763fd62bb168cfcb0148cf7790879f1be9ad4954cf53cd17fd8bfe49f24533db1164cfdbd7d07e33cd346fc1efb17b789643a4f300423bf303760bcdfec42f669b27885ee47f38169e1bc977e124cf18d3706e3fd11fa163c22fdda9482a7b43e7805c3ff058660ba9f2b9e87f364d14632d5fb4792e9ef37fe02e33cd926028bf364efe039c9b712f747fdd9ad24d3f58231fee58b601affdb9b648a6f7230dedfe12d25d3fa760a467d3817f218145fd99f9269bda1924cefdf93df23fe7e009b349f98623c2c1a5ffb2298ee97d8609c3f32e6609c3f8b2cc9646f0bc914cf3f4aa6786607c6fe958ee20f8bcdafb43f81e20b165e93fe5c3e25d37e30f13dea3ddd093cc27ede2d18f5983804e3fd1d9a25989ed7168269ff61fa089e223f9e8167d47f862699d6f39e25d3fe68152ce2b70318e7c9ec67c9f4fe12138cf70f252918f1932b9e67507caf08f9f1be9938069b648fc15e308dbf32108cf7df88e7637f627c150cff7a0163ff42f000c6f99c88ec9b4d37a867d1fc62b3f1a3fd3c743f5b8c5ff102463cb2da82117fb4df9269bde12498ec510f25d3fef01c8cfcb8b425d37eaa5232bd5f2506235ed85a9269bda4154ce31d89f6cef17ea8037841f76b447b17d84fb6012fa9fd6b211fea49978b608a4f0c156c423f3bc9b49f3602c31e6f7bc1d0bf4a32c50fe44f6c1bfb3be22918e7e93a6287d907adb70ec063eacfd51b784afdb3d1c0c85f8a5232cd97afe0398ddf652d99fcf75130e5879d09c67c961482c97eae7bb049f74b3ac9349e86649a4f2692b93cb978be8df749b88229be509660eca7f39f24d3f922713dd6afaedf8269bcd690c7c6f9d755001e52bc5b533ceb5a63d29fab2199ce63edc1139a9f82083c25f9f5068cf745dd2cf082c6238d25d3fb1d378229bf503ec178dfce6a0946fce9bd0aa6fe5ccf04e37d0af27aca77ac1bd8a2e747df9229fe2dc136f98ffc4530e9f34a934cf9f10fa6e78be739387f48fde9daa8f7273c3e310716f67b260f9269ffde1318efefb91e24537dcd06e3fd79f6156ca0deb1904cf6a080d1fe6a2199e67b5f303d4fbb801dd8fb0a8cf8f9a611db78ff5dac8211df745f60d413133e7e2c389be17ccc183c27ff97459279ffac4b30de27947e0826f94c4532bd7f5d032fa9fd6d2a784af58e21d8a0f9e1aa48a6f53f5b30d58ffd6730de5f94ad89ed01d9ef86eb2b0b2eb0feac6fc04b92af7525d3fbcd8f6093fccde64532d9cb4d30c57fe1128cfd33eb77c1a41feb028cf7355a1f82e9f9ee1cec62ffea9b60f227892918e785f0bd8dfdafe9b3601a4f270463fda81980f17ea59adbbf3966fd41ef472dc14bf2075b1b6c60fdec4132d50f0bc9944f1cc126c693dad7bf5e9ff2075c6f63bd6b45fd33b1e6549fb8adc0580fdc7682c97fdd5ab035a5f74309c67961e50bec523c1de2f736eaf7f11c3ca4feaba8bfa6d664467fffdc080c7f53b492a97e6f08a6f686776013fab4964cf69982717ed224ff30b5b15fe81608c6fbd3ce60c48b2d8dd78cdd8ff2eb5430c5839b5730f2dff60086be74a4af33d6ff148fdd8391ff6a74bf390b30693de808b6917f64c436ce8fdf1230f6bfb7345e0b6b3a27fbe9c0f319bdaf8bfcc782a5f7e43f0f60cc4705f99f256b3fedf71c826d92ef3625b627349f68dcdf9b2c9f9b927f237d3458ffd1fc5b8327f007241f530f1aaf6b00467cad51ffb2f8674efd41fed5b6711ed0e4fac192cf39b57733022fe97ecf977feda32abf7d8c9f3e26ffa7827fa74fcf0afb9da5daaac3fe58ff6a0be8f3df21cb2f72b9ecf3bb5c0afe9b90afff77f7df5116d62247f5d81ffad87ddba87590cbfd87bfb3f1f9779605f20899fa6be8cfffb79fff167b71e9f393743ffadc1663f4e33aa96fbdedf8eccf3f18b9ffff65e16dfbc90e6009240d1fa9bf2b3bc9439ee0df4d1661eb3f64f9313a3f24f3e4e717cbfa7791e5379fecfefa91d758f05a8e94457a8a7f2b590235542335561335553335570b364ea55aa917b5669f86e951ab76ec7365b2de544dd5d99f15ff9dc67eb1fe379365a3aed827652391a85bf6b963d2ecd43dfbec982c07464726dd91fdfb4e3da9f74cce7bf5817d0c76e53ff4daff5b6479e43dfdc446e699fddb597d515fb94ebda9efea87faa906ec9a9449f8c524f85607ea501da96375a24ed5993a67d2fc1bc9c25a7a5637ec9f91ba607f02d8fd92c9f2cafe6929aafaa4284cc7be15431d2ba662b18fad380af31a8aa7f8ff3d92fcf7cc954aa0844aa4c44aa2a44aa6e44ccf5ca63d2dfbf4b6622a059b45064aa954ca45a9954669954eb92a3745537465a5acffe8b5ff37cab251b6ca9db253cf8aa2ec95036bf1513929f7ca83f2a83c29cfca5979515e9537e55df9503e952ff6dfbf9581325446ca589928d37f23596c65a6cc9505d3b393b26413cd83f261288661b044c0b00dc7700dcff08dc0088dc8888dc4488dccc88dc2288dcab8a87746fddf23c99f9345b58ca6ff23a390df6677a3353ae36adc0ccdd08d95b13636c6d6b83376c69efd391847e364dcb3cf897d8e8c1fd8e7d178329e8db3f162bc1a6fc6bbf1c1b4b0cf02685e757f9b797f9aadfe999ff8af6561527c1a5feccfb7313086c6c818315fd4186363624c8d194b9916c6b2370ad3304dd3326de3683aa68b8fc73ebe19b04f684666c465eaa53a9a31936a6726666a66666e16666956e6c5accdc66ccdcebc9a375333757365aecdcd2f33b1f2eb1cfcd764311a736bde3169becd9db9e7b21ccc8379344fe6bdf9603e9a4fe6b379365fcc57f3cd7c373fcc4ff38b7dbecd8139c467648ed967c23e63736aceccb9b960992a3334e3de322cd3b22cdb722cd7f22cdf0aacd08aacd84aacd4caacdc2aac12b9dc2f91c5ffaa2c56655dac4b3f2e566d0cad5a3d5b8dd55a9d75b56e9666e9d6ca5a5b1bd6d3f7ccd96ead3bd6522689b5b3f61677bfd6019f2393666a9dac7beb817d1ead27ebd93ab351da592fd6abf566bd5b1fd6274b98bf5884b0601e3d61b3e9c0faeea3cf1fd1d1bfa2634cb31a8bfe82f001fff74a89aca135b2c6d6c49a5a336b6e2d7acdb196cc74fa4a9ed18f85b5b34d48f2439643bf4c614e6ddb766cd77ab03ddbb7033bb42326cfc178b4633bb1533bb37336abda766197ea935dd997de92fecce74fc932307756cdc6646055aa67d77663b776675fed9badd9ba71303fec95bdb6376c249ef9676fed9924625414662bcc5e602bf766681bf6d6beb377f6de3eb0cfde3eda27fb9e8debde7eb01fed27fbd93eb319d7b35fec57656fbfb1d1b07efffcafc9f27cb16a66274cb78cc6f8b4df992c1ff6a7fd657fdb037bc8faf3c47a7864bbe6dc1edb137b6a2db924bb7e64fab161ff9cb1f6ce85fd9b91bdb0972c485698ddcc1dc3311d662c8eed384cd2bde33a9ee33b8113b218f5dd89545df17fcdecfe155954d7183ab113333bb1edda499cd4c9ec2f27778a5e0ea7640ff0ed3d6b55653d3b17361acf4cc706cc6216dc6ed8ff3b356b6be3b44ca6b9d3998173756e8e66f7938feeac9cb5b3b1b7ecf78eb365d21c8d9d73e7ec9cbd73708ecec9b9771e7ec9107ecb7a7eb6a03f234b2f09f3c683fe7ecea3f3e43c3b67e7c58cadb33db1ced6b33d6656cc3ece2b6b5dc5dab5c0a7f765ec63cfe9e374f8bc39efbd24f6d20e9d0f66fd47e7d3f9ea7fe954ce379366dffff5f6cec8e9ff5acca933b3eb9fe4f8576599ab9db3b05f9c25fba1e21a6ce2b08c23f34accd3bab6ebb8aebd702a73e17ab66b1f5d9ff9a8931b981fccdacfaca5f76ec86c2ae673e6d18ddcd84d98bde0e3746e6a7acc73b02b594fbcd93336be67377373b7704bb7722f6e6d176e63356e6b358ae67656f3afe8987a70afaaeddeecd6d55cdd5db96b3626cfeec6dd9a43f7ceddb97b3622dbde86dd837bb4576e6031ed331df7e4debb0feea3fbe43e1b817b765fdc472195fbeabeb9efec5707f7c3f9703fdd2ff7db1db84377c474f1c0fe7dec4edca93b73e7eec25daabd2f6091b8a7aa81f70fbdda9f91c533d8f46d79b6e778ae937b9e71b2179eef055ec8e4601fdbf0222ff612e6030eb6d1eb8c977a99977b85577a9577f16aaff15aaff3aedecdd33cdd5b796b36e7c7c6c9db785befce7a70471ebb0b1b5d9dfd3ff36fde8e59cec1db7b07efe89dbc7bb5f01e58467af31ebcc71f5af5bb1ff853b23c79cfded97bf15ebd37a730637362dbde3bd32f2e099368cbe6f229b39ae7de76bd0fefd3fbf2bebd8137f446ded89b78536fe6cdbd85b76441d7a3aff8866ffa966ffb8e71f45ddfb31e7c9ff9e8ad6df8811ff663e547ee8069e4831ffb899ffa198bd6be51bffd523c9189fe75599e2f7eee177ee957fec5af0d6603e6d46f7a49fc967d3aff6acead27ffd6cf77bee6ebfeca5ffb1b7febdff93b7fef1ffca37f62f966a2bef8f78aea3ff88ffe93ffec9ffd17ffd57ff3df8da3bdf03ffc4fff8bf9f485bd30c74ee57ffb037fe88f8cbd3ff627fed49ff9737fa1382c27fd6679f70f597ea97dfc99d8d25f066aa004060b112da65f6aff97c0f7fae5b7811d38fe3570cd0fe31478811f04411844411c24411a64411e14411954c14509839a7d1afb3d68838ee59af3e06a3f07b7400bf460c5fc48ef0d9560ddeb99ad30d906f6c27a0e36ecaedbe02ed8057ba50e0e4a191c8353708f0af54f35ab3f2d8b1d3c048fc153f01c9ccdd829ad73f012bcf6da15bc05ef81137c049fccf38c83afe03b1804c360148c8309fb330d66c19c49b47016c1325443253442d3188416fbc39c71e8865ee88741188651c86cc73a8709f3cb4698f29881c50f61d6fbfc300f8bb00cabf012d661e32fd421d3b41fb2387f94e5e77af6cf63d25f1db661175ec39b19875aa8b3bbafac636f27e13a5c33795e8c7b2f0d37e136bc0b77e13e3c84c7f014de870fe163f8143e8767f52d7c095fc337ab08dfc38ff033fc62d2982c22f6d97ff90e07e1301c8563e3184ed82cb40dd6e1943d63e6ee99fd7c9b53f6dfe7e1225c466aa428456444e68fcacdaf5a46b288ff862c28f1d4c8525fd5d7c88e1c7f19b9e673e41987c8376751c02375a61351c8e2f7cf88e524511c25511a65c62dca8347ab65f369cafe3c4645f01895aa1255d125aaa3266a5910d345d7e8166966678ccc75d4467ab48ad6d126da4677c629da452c82f0039ef778d68ecdb40bf6bc7d74888ed129ba77d2e8217aecefcdabed866af4d1eeaff6f2932c068fb043b77516ca2e7a8a9ea373f4629ea357f6a437e6750d16a79ca37773c2e6e8aad7eae823fa8cbea2ef68a0ce153f1a2aea8f2a2c7f9e1b8da27134096d2b8ca6d1cc8aa379b48896b11a2b56111b319bac629b85166eccbc3d9f73962c7f93b29843e33ef6e3200ea3fb388ae3f081f554cadbcafc5a1f25fe2c0b7ff68f7131d4f8f9e22cd4f73889d3388bf3b888cbb86277bcb0f87111d7d6dedd5b4f7c2639b959dcc46ddcc557ff515dfdb4f662cb3bbaca5875e25bacc5ba3f8b57f13adec4dbf82edec57ba5890fea323ec6a7f83e7e881fe327e3143fb3d866c9bc7380b86e689de373fc120ce2d76011bfc5effd88736b3055a38fdeff992c0ad34726cb6b9cb8adba8a3f4c23fe649db7641ec6b09ee3da665ed3fc0c33f6dcaff83b1ec4c378a456eaca7e51ee94713c862c3c1eecff9dfdb7493c55f57816cfe345bc4c54e3c17e4894c448ccc44aecc449dcc44bfc24484263efde9b3e8bd8d887e7a42c3b65f3d6d17c4da2244e92244db2a84872b1baf07765b1c886f8155b36bbb2fe65914fa2b8499194e69b71f26fd69e8dc9d9b998dff6c13ad953e39054c925a99326d6d5f7beea9db4ccca52f40d55c1d97d95bb385332bb4abae49adc12cd38252ceb4956c93ad924dbe42eba26bb641f1c9243724cd82c657a8ec272014364d94c9b4b2f4dee9387e4d158264f09b34ab146d2e722ff4c96e499f5e198e50e2bf6efe7e4257935dfad3e3f3f276f56ff8afa7df26ece8dfb709c7c249fc957f29d0c143d192a8b64c4abe3bdc7b4fbac8dc9c264b2df93713231de9269324be6c63159d8c76469c6a99a2aa9919aa995daa9e3dfa76eeaa5bef1603a2cbfe1b2f45910cb54b769601cd3308dd2384dd294cbc2d76dfa7cc4180aaff6932c96b0fe3453466e6b97cc8e9d344f8bb4343fd22a4c98f75a5afdfe8687f4621becee75daa46ddaa5d7d451f4a04b6fa996ea91c9fd3f978549c3644957e93adda4dbf42eddb15fedd3837d4c8fe9c9d8a7f7e943fa18fae953642b7a344c9fd373fa92bed2c8902c2ca7db4681719fbea5efe947fa997ef5feb197a56f7f9f5bfd2acb8f91e17a78607dbb5412ff2139a7dfce9069eb673ae86da5f7c54ee5fa696f8f553a4ac7e9249da6b3a4b50b65c3f42c5177fe23ef31361a7d0edad724d379ba4897999a29c63163f971b4efb3e3ccecb3e2649559999d39ea57ea0475e6665ee66781e9fa81a3a06ab0eb675096e1c5599845599c25ce23b3172e8b6af5b9d52fb2889a9add3f99d14efd4a064ccf952c553eb2cc74cc2fe61b077dcecbf477613d982316e37efaeb2ccf8aaccc2a61e7e45b98b34db24b56678d5dc763f53b6bb32ebb662c62f343d6df6ff6c2fd66de9c652c99661ce3a74ccf56d93adb306bd3b36d76e74efa5999c53363a603cf76bfcd8445369691edb23d93e5901db313d31d85db7491ddff268bf28b2ca67a973d3032b24743c99eb82ccc37f67d642ebcc4661146f69c9db397ec357bcbde852c1855577d4bdaec23fb8c9e93419a655fd97736c8d8e866a36cec8eb24936355da7cc66d9bcf7ebacbf17d93257734509552b377233b7723b77d8377d3d6dc29edad74398b7cedddccbfdec900779a828ff4496be024a7dabf8bd36f63edacc23c330ee982cbd97efed70c024619219f7799c27fe364ff32c3c30597eac4172bf95e779919779a556f925aff3266f8d63dee5d75eb7dc613f1ef9cdfdeeb3e25cb316f153aee7ab7cad9eed32dfe4dbfcced67396c1b09879c8729a4bafd9feb7719f29f93e3fe4c73cc88e4c9b1392c52afe812cbd0f559209d332db2ed5263f1926f32baed05ca6678eed5877ecbfbce6f7fe5dfe104cf347a3fd690d92d97afe943f671725cecff94bfe9abfe5ef7dd4937ff49909af719cddaf6cca73628dcd8871fe997fe5dff9404d9cc833f3613ecac7f1579ff1997dbc4c51b4cfee30c9a7f92cc9988e1d59a699f47e377c0bdffe200bb75792259fab7b854d65ea77be302c63cfd2fb1dd5bc481673943bf9b2500b8545f5b3e8814547b6dcabc0575793b1fa919f0ba33059b7d9ac557d2cbfe8f312ebaeb7e4c2e96b1785cb62ad53e1157e111461112923d52ee22229d22233f67d5ec365611ac6aecdd98cb92f8aa22caa3c2459faf6b398f5f597f9e5375958c6b34f6fcc62be8b0b7be4ce74a97227646177ae8ba6688b2e288a6b714bf25f7684303d53fc645268855eac8ab5710835e7b597a5d8b06cabaf6a7ef4d5be60cd243916dbe2aed815fbe2a0d8c5317b284ec57df1503c16cc3efa1a279764614e0b268f7128cec54bf15abcfd248b1aaa7f57164fcab22bde59fe742a3ed894b5efa33c5420875c9645f1597c15dfc5a01806398ba2c90bffd8555114a3625c4c8a692f4931ebd72c989ea8c5bc8f467b5b6677e03163b12cd5ecbb544287c540d7d250c2d22cadd22e9dd2354ebc22c2ae36c7f6a1f498cdc6a55f06e1ae64290dd731f7efc822d654c40cf3adb665c472b053191b2ecbef852cfb5e16f3cb3a9749999659996749745f163f564a7824669465599597b22e9b5e92b2cd34661b565f3b6371dc985bb4e10ffaaca7ecca6b79b3be4acd0a4a9d8d67c4a45995eb72536e992cbabdeda326368e5bebbecf64cabb7257ee7b591425cd7a6d28b552fb45961fd13ef773ea8dcd103b75c56439183e1bebc81c5b7d3d2cb0674e63cfcb63792aefcb87f2b17c6271ce86e527a398c594ca9d5d97cfe5b97c295fcbb7f29d79d12eef32adafee9bb3bebec13f337b5f7eb079bc2c3fcbaff2bb1c985d392c47e5b89c94d3c42d67e5bc5c944be3c45c7d156a7c4c0f665f1939564a655466d06746a7e0d4ef2ab2aadf62fedefb3059d8b7663f36c8d834bbaa2c26cbbd19b2deec97483a264b6b06c6a1b22bc79bc5e3a00996e5c4dc562e538ba86236cfa29545e5574115329fca66bb3ea736471513d73a313946fd9a4515dbdb2aa9d22aabf2aaa84a2bacaaea52d55553b5556745c1b1ba062b362e5ba7a355b57ebda3aff254b74aabf42467b21c83a36ad9f51f641151a5cf6571d488e9e246bd315559556b264bc4662c268b193269f64c96a37bf65a6fae2e2387e9eb5bb5a9b6d55db5abf6cab53a54c7ea54f575e17be6c717d681c5d5233e26a3fe2ebd3d570f4c96c7eaa97af646d5b97ab1aaead5dc556fd57bf5517d565ff128afabef5e966ac07ac2e5f5cf678bddb11a56a36a9ce4ce23c6c5339adf627e4bca6270efba60d1ee539ac5a36a524db98e912c51af654c965335f33a8f656bca3c34ccae9a87af9eaac6ac3f17d5f2a26637f7f5a25cb81fb615f38349d17f26b406c3ee7570377d7e75312fd6c5be38e1cbc5bd78179f8d897f092e6134b8449798c9d2b91fccbadefb159cde673059946a7449823e47f6d9c7fea32ca859283c96225912f549bdbfa4ec9e593fc6fdfa9c6df523d4af3d18a774e75d2fb9925e8ad0c8eefbbcfd525eaacbe5525f9a4b6b9c2edde56a6fcdd1e5165f98bd93244764f10773e445d68e5da55df4cbeab2b6c2cbe6b2bddc5d7655a7b697fde57039ba2fbd2c173633b1d8cde27fd5d684fde2fef27079e4b2a0adfd5add3f95256071f24d29c2faf27479eeb585d61bfb95a07ecd81e9d8a377f35545b3df7975c88ca6feec72bebc5c5ecdc4383afae58daf136d8235f75dbd7e8db92c7c3d96f5f196c5dd5333bebc5f3e2e9f97afcb777cbcf06a13d388e16578195dc66c869ddb6c66cd466c967db5ee7adbbf4c2ed3cb8ccba2f0bcc2fe5d16392f4096545373b5cdcf97f9657159f6eb90bdcdb2d8b85fd50accc08d8c83a7298f8a1fb4c620fca8d55a49b6b5519bc98ac9f9565bb56def1cc38bfaf99ecd8d336ef74cc7b8341e9b3146e6dcdef82cdeac9ddaadbddaaf83484b46e9ad0eeba88eeb84e5ca9fcce3796c6e9db008f4c9dd32590e755a67756e325990875bfd0aeaeff9cbcfb2287eaa2b6e5dd4a5f25557c68149c0bc0fb3dfa8978569716cc69eee2b6aa9cc422bfc8caa9a4590ec7f0d6b5beb7eb84347cdaf2c63af9cd73063f67faa22f6ebdeaff7d27875c746f9cbfc626d5cd6d7fa566bb55eafea35d36ca77c8af27a536fcdd8b9b23cdceb6318d6239bdec2eabb7a57efcb3d932515759e3fe695d8112074cc55efd44370523ae5b13e184cb3597e7f6fdbbc12cfda581f599b4ff57dfde0b6a1556d13b77eac9fea67e3549feb17a65b8bfab59f159cd728b02d1691ceeb37bfb1b7fe376fd994b220ca89acbdfb5abfd71ff56738a8bfeaef7a500fcba01e992ed3c27db17077aec3f29881cb324b63578feb493de5b2507ef20f7264f6a797a59ffb13f6ff0d9bfda7f5ac9ed70b9657b2fc8bc52e5b7b592f9d779bcdc98dda288de13f5a35f3ca1f8dd958c64363db47f6d9374e3f438693be6ed3fbb2c665ff34a2d0def09a9af1cb1ae0d074eb5be3357e1334a1f3d4444ddc244dcafae291e54977eeaec9ac2dfb158b429bbc299ab2a9b8bdd09ca8f42b763fcb42732397c5e4b364aa8cd2cc99c77a7369eaa6316377c3eefb7039352d0b8359d6e186c6aee99a6b738badd0b48a466b74fbc18c9b557aecc7c57c6fd64cdfc76c2c3efa5cbdd9345bebdcdcb9dbbe8283d53fac9c9b5ebfb3a4d935fbe6604d9a63736aee9b0726c363f3d43c3799bbeb6be64c2fe3e6dcbc34afcd9b948559c51f65a1d95ecaa2f1959bb5faa138cd7bf3c1a22ac7ff609e89d973bfa6686f9b4fe3e0dbcd57f31dbae167ad3483669828d60b7bde283359ae356bc66c961b46611f41369366dacc9ab971b296eeb6e1e3815566167d9b9ed3354b63efad5bb5555aa3355bcbe8ebd581396efb15c45d9f2b87ba71689dd66dbdd6ef63181e7719aadfaf09ff365752a5cfa4bdc2fdfa937a8bc76de03dc65d1b1afd4afdb658703fbbed6dba8d8c531bb7499b865ef5de666d9e9fdaa22ddbcad8370fed85595585fce4beaddba66ddbaebd5e5876dfded8bcf3ddd70ee4eabfefed5aaddf1de36baddeaeda755bb35f6dda6df0dede056f5ec89eb7734a63d7eedb437b6c4f52163f38fd41161bd97abff39945bc2c951e313ddbe5b9a2b7f7ed43fbc8b4f7686ffa9d05b5d53ef55adf326fdf9edb97f6d518861f4e5c44ed5bb269df59ccb3cf3b7bc9645ef5f949fbd17eb65fed773b6887eda865b3068b697aed123b19f67e906bf6b69db0acf8d44edb593b6751cb397875ed76d12e3bb59fdbeace38754a67746667c571922779af472c8e39fe4116e75759d84c99a94967770e93e6dab99d67192cd770d89cb063be56ef7c7b5b9f7d3753baa00bbba8da767197746997b1b0b8e8ca7e6dc8db75157bfea5abbbc6df756dd775d7eed6699ddeadfaac8e723b5ec95b326b687b8fe2fb4e65dce75db7ee36eeaedb76776c02d875fbe6397aef0eddb13b75f7dd43f7f8ab2cbfc563b40fdae2fbb87b59fabdb76ef7d43de7cfddb97be95e6bc738b9ae7de8ff1a4166c38eb3eddeba77964f9cba8feeb3fbeabe9d85fad80dba6137eac6d19d195b0b33f6b56ed24dbb5937ef16ddf2aa5e95ab71358d9dfbca7763f9bd1ce6d00ffa99fd6ad97bc7bada4cbe73b7bb322bb18ee1cadd5d5deffdea3109dfaffe35b886d7280fa302b66ffe1d1d13eb0b72bf196a7fdcef5de36b52b2d65d53ebe19ab119ef6c9dddcf7eb5f79ab3ff5a5ccb6bc5e29897ebe55a5bfeb5b9b6d7ee7acd27d7db55bb321d5533b30bdf8da69c5c57d7f57573dde6937efe655aa8f4750ce623a2be06c6f7638dd87c74ecfd38d515ade7de5aaa8171bcde5d77d7bdda3847b5edab2c5993353c07367f9c07f8afd7f89ca7ebe17a8cd953afa7eb3d3dddbf998b6641d1eef5e1fa787dba3e5fcfd797eb6bad3069deaeefd78febe7f5ebfa5d75d74139bc0eafa3eb987d26d7e975769d7b6bd60b8bcccccceb92dba2f5f327f2dd7d73c7fc1c27ebcc52c3a79b7263f955348c4c36f3b9aa6dbf33591cbebef31764b99937eb66df1cd6379ecb66877edf8bad140b2fb9b139d0b8f7b51b0b346f8152ddc25b748bd5db2db9a5b7ec96df8a68d025e15755df4a7377ab6e97f0e3c626c65b5bac6e9db1ef772df0fd16d6af1f5eafb0d86cc4246aee7236b3dcaeb7db4d4bc6d133cb2d44fefb87ddf3ffb52ce6e34dbfad6eeb86c5860d1b0d663515f3f8ecff6d8fc5eecc9fe593dbe6b6bdddd5a5fa62d7cae2b65386b7fdeda0d4ea58dd869f55773bde4eb7fbcbddede1f6787bba3ddfce51623f180fb71733643e7af24759983454afa4fbbfdede54f7f67efb48068a226ac97f7d7d3f2a6e9fb7afdbf76dc02b565f2cb35c58776c86d89a73162f6d6e43e3741bddc6b7c96d9abab759eadce6f1241ef77bf56f8bc80a5fa2eab6d4d4a8d394a85202f5ac199aa9599aadb1b16e5acdedade4e78fbbef3396c82759cc58f3345f0bb4508bf242d1d20ce3f287d3597fc25e1eb5584bb454cbfad981dd7b617e7a119385f624cdedad96f733a75668a5566917ad564325615ed0b65fe289b25322add15aadd3aedacdf84c1dd573979aa6e9da4a5b6b1b7ba16da99af0ebc8b03f2a8bb1ad7667dada9db653bba0b9bddbef2c7f37642dcfa1f8f22fc8926a7beda01db59376af3db008efce9cfa1f2c3bda71eb6451633568f92e43ed517bd29eb5b3f6a2bd46b935d2de8c85f61e4fb40f36269f2c216e94246ccb2767e999da97f6ad0d3436a6edeeefd98bf5dcee2c35f2b59136d6260a8bd955d72eed525db37111f562ef2fcbf2a84db59936d716da52578d7da8318f79673d9993b86e6fecb363518056b6bac26c79a71bbad92a9dab5bc64db77527327457c97596ee844e7fe622ce597e32d4033dd4233dd6133dedc7e0d74f98f5b2447e2f95bbd7333dcfebb2d20bf6fbfe0c84266b797c86ff2b3a16157aa957fa45aff5466ff5aedf11c3f2de39af8f322fa45ffb798faffbfaa6ebbe66817ed3355dd757fa5adfe85bfdcef850bff59dbe77c6d5413fe847fda4dfeb0ffaa3fe14bd07aece722db28dde4ef86e0bf3e78fe9e8e764adbfe8af4aa36ead86cdca34abf4f6eff075c43fbd8724c9f537fdbdb8ea1ffaa7fea57febcc07588affed6ed3ca56a3f7beea637afd3a561f4733895c33d687fa888dd0589fe8537da6cff585be5ca92b6565accc95e5eddd3c7ded778d38d5ca5e39b6e1eec90f0b0ff68b2cae7170dc95bbf2567e3c535f56415f310a4e2cdeea57df6a5a7bfb73b2048fab701505b355bc4a56e92a5be5ed78555807166b6efa5ccb3afe248bc9b28265dee5ceed8565b4b755b9aa5697555dcd568d3e5ab5b1c7f7c23129dcddaaeb76abab395e752c5bbbe3f66e626ef955166f7533e3b261f9d270a5b1f178e335567efeafaf2afd9571311f57fa6ab55a6bb362b8daacb6abbbcbc76ad75767d2a05f79b0b67d0ecf64796372ec983c0adfc570cff7819ef85efea3d8cf6bdcbbdf76e87ff8cd6abf3aac8ead1d7cb84edffa7e9e679aa6b63b6627bfcae2af4eab7b9643ad570fcdfbea919fce727f3a052c4f69fca971795a3dafceab176db67ad5ebd5dbea7df5b1fa8cbff26ef595f615a31fbbddf98749f7c177bc0f9d57f6795b7daf06d17e35147b2cfbbdbccd9339ee7739b58bd5a8d72e173b9358e3acdf65b1ceab717d67ec5693d574355bcd51c3b7708ec1fdf3314c92af16abe55a5d2b6b439badcdb5b5b6d7ceda5d7bc69e45cffb1f7bdefb489eaffb32097a7b62b3105fc7e3fba9f9beea7e36627e6318266b7f1dacc3c0091cbecb91452c6431bd17f85d967e7473dbd8d7efeb681dab77e20c2d9745f9b16be9cff8b1f03198af933c5d5bc1789daeb375be2ed6e5ba5a5fd6b5b5b437741601fbf7fbd5b30fbe57a25f6bb15a16fc34ceba757416dfb3e83e9ce9d77ecd807df6ebceefd6cc62bc50c8d2eeb411f366bfd90bd7d26374b7beadb53573e4b2fee5fed5793f628aba5eaf37ebedfa6ebd5befd787f5717d5adfaf1fd68feba790c5fdd69eef5ac1b8b04fbf9ef76a7e704b3e584bbedb9f5950bffba8f7e2eb7e97fcb1df83b63eaf5f02d736cc28effa73246c8e1feb193f73d2e7373edfafe4b23c69bb7e5dbf35cafa7dfdc1e617c8f2f7f78ffdf38ff3283f69566595d196e7f5e7fa6bfdbd1eac87eb11d335bea38c568b980e4db0afbf8fa6c6acc7cffc04c6b2dfadd7cbe90f7a7bea77569a43967505d5e0a69a713e6171d79d36d1f3f5b8f776eb49bfa3b61f93cb389f38de7aba9eade7eabdd8d32b674be7afc8f2d3d9621ecf798f6a11dcaf179774bdcc5f36ea46d9181bb37faead164ebf368979c230a77db5439cb4602336661ab91436d3dc39174ba1fd0a2caa7f6511e4ae0f0b36569fdfacc6cce59f8ce3c6c9271b77e36dfc4d607da94f56f35b9bfed2b8fc7eb6381a2a9ee2da55972acd26dc449b78936cd24db6c9f9aa0bcb6eac27ffdbf68bbc782effdf76ae6549552488eee733a6f615fdba7dbb6356a899203e5a6db51f3b4444f0c14b1489987f9faa8202a4bd37b457331113b9d010943a661645669d93b6d9e37b5a6207f5ce54d90a7b630ee6244ed8f3c2d4532060d9afca32ad349d280e4d481246103617866ae8b10a11c3b2b36c86248e1fe983506f36cb7bd7f59cde1344592e9dd23decc91c0e90c0115250a0014d680104cf80a691efb672cf7c667bc1191af13a6a6c8d2ed758790ea8a041fba8a546ca6681e23a2c67047dffd9b4a1130fb9e20cbad0833e2ce34747a706bc2c0e85fef98baee722bfd4f4404187dc51957668dcd0c2d0b660004318c12b8c61025378f3347fb13bb0acbe5df0f8ab3a31cdd0e01d3ee0136ee036e9c2ddb1ed7437f7e95459c13d7169c0bcfd003fe0117eb2bb700a4ff08c94def1b9eef5e9337dca1557dfc052a8ea8aefae6ed98c216b9d45ef4ffa485524aebeeaa181333471eeaa5edbb7f71bff47100423b4421517519a70a1686ff7106f632dbe471b97ebe0a027b3a4874ec8a276354cdffc603e255ca59dee228325a4b8c2354b719e8d29bbca113774bcb961e319c8f15c1f6327bd3884873ca043ee1bdcda7dce35430f7d0c30740718e10e636fed2f7ddd7f0cc2861b3aa1161991827b3cecfa8d66ec6112bce2115354f693204dfadb96d559cd6ccab25f967cd21655d61b3627a2d61336b0892d72a03dc20e53978ef868d8fa229f5faee75a7fe935c07eb745b764495b08ec7d0311d5f514356ca3bffd70224ff774bfb3f1822818bb5ad8461d3bd8c5de6e837df6fe0507fb088787258ef015c7d68bd0fa1a7cc79ef3f0a8623d21573237714a0f6bb636061dba66de58d0211dac1b76bfe293ef6039b59ad281736c393795d713791dceebf80ee712f96e3009ddd07544a5d179e13613e6e4967d435ca3ec245389a0cad56bfd58aad7bf7aee9fc122ff178e852391e3f3ba9c7d9399eff23a234758aeb7d96b869def6fe7fb0f468e60216ac18678a2378b9890bd31a42ee18c42f1d27b720dcf09969c1fb0909d7904e76ec356026184f0baafc89d66956e3da5fecbf6f6f369d67545d6b5c5d924df135a7ec542cb5e26e49a7cbfc201afa191da8093df3604f79408ae9ab0ad576031ca9ca3caca1635c83935653d22cfb448ce3bcf6adc752c32e62a9eb9443352aa19aaaae7e288acea1ab4729f2cb50e052bf5d4871cf952b02732ae47d9db635ea9689b453c57bc2062244752ad5f5e84c592fcc3e1ee4c949995795bc152fdbea830d827ffc84c20e9088f91d2fb395e4b665b520152c3422492ebf27dce3a1163b10a2cc60916c11710bad85b6ed69a7320cdc09db863ceee0a1533e20c1ccef6c814cd995eb334f9fc9ecf4b7ebda988b5c23b67b1108e04dff03d63da7fc32f8b9a5f4caeec2fc7c9c7e6f5bc5e154b795ce2e596e3679fca7dd222b624e3bc58134fe3a1e0bbcd199677fcb81c4b3d6a7ea7d6aeb0fb7e71ceb9a3f5738b7cbeda2ba7de3ba79caf57e52fff15fb1fcbbfd3fefcfbaf3ffe0193cc32fd</data>
+ </image>
+</images>
+<connections>
+ <connection>
+ <sender>installButton</sender>
+ <signal>clicked()</signal>
+ <receiver>DesktopEffectsDialog</receiver>
+ <slot>installButtonClicked()</slot>
+ </connection>
+ <connection>
+ <sender>radioButton4</sender>
+ <signal>clicked()</signal>
+ <receiver>DesktopEffectsDialog</receiver>
+ <slot>noEffects()</slot>
+ </connection>
+ <connection>
+ <sender>radioButton4_2</sender>
+ <signal>clicked()</signal>
+ <receiver>DesktopEffectsDialog</receiver>
+ <slot>standardEffects()</slot>
+ </connection>
+ <connection>
+ <sender>radioButton4_3</sender>
+ <signal>clicked()</signal>
+ <receiver>DesktopEffectsDialog</receiver>
+ <slot>extraEffects()</slot>
+ </connection>
+ <connection>
+ <sender>radioButton4_3_2</sender>
+ <signal>clicked()</signal>
+ <receiver>DesktopEffectsDialog</receiver>
+ <slot>customEffects()</slot>
+ </connection>
+ <connection>
+ <sender>applyButton</sender>
+ <signal>clicked()</signal>
+ <receiver>DesktopEffectsDialog</receiver>
+ <slot>apply()</slot>
+ </connection>
+ <connection>
+ <sender>cancelButton</sender>
+ <signal>clicked()</signal>
+ <receiver>DesktopEffectsDialog</receiver>
+ <slot>cancel()</slot>
+ </connection>
+</connections>
+<includes>
+ <include location="local" impldecl="in implementation">DesktopEffectsDialog.ui.h</include>
+</includes>
+<slots>
+ <slot>closeButtonClicked()</slot>
+ <slot>installButtonClicked()</slot>
+ <slot>noEffects()</slot>
+ <slot>standardEffects()</slot>
+ <slot>extraEffects()</slot>
+ <slot>customEffects()</slot>
+ <slot>apply()</slot>
+ <slot>cancel()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/data/DesktopEffectsQt4Dialog.ui b/data/DesktopEffectsQt4Dialog.ui
new file mode 100644
index 0000000..b4d9ef9
--- /dev/null
+++ b/data/DesktopEffectsQt4Dialog.ui
@@ -0,0 +1,320 @@
+<ui version="4.0" >
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>744</width>
+ <height>512</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Compiz Desktop Effects</string>
+ </property>
+ <layout class="QVBoxLayout" >
+ <item>
+ <layout class="QHBoxLayout" >
+ <item>
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType" >
+ <enum>QSizePolicy::Minimum</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_2" >
+ <property name="text" >
+ <string/>
+ </property>
+ <property name="pixmap" >
+ <pixmap/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="packageText" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>In order for Compiz Desktop Effects to work, the Compiz engine must be installed on your system.</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="installButton" >
+ <property name="text" >
+ <string>Install</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" >
+ <item>
+ <widget class="QLabel" name="warningIcon" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string/>
+ </property>
+ <property name="pixmap" >
+ <pixmap/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="warningText" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Maximum" hsizetype="Preferred" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>Desktop Effects are a great way to enjoy a modern desktop experience without transitioning to KDE4</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox" >
+ <property name="title" >
+ <string>Effects Level</string>
+ </property>
+ <layout class="QGridLayout" >
+ <item row="0" column="0" >
+ <layout class="QHBoxLayout" >
+ <item>
+ <layout class="QVBoxLayout" >
+ <item>
+ <widget class="QRadioButton" name="noEffectsButton" >
+ <property name="text" >
+ <string>No Effects</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_6" >
+ <property name="text" >
+ <string>All effects are disabled and KDE Window manager is used. This is the default behaviour.</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_5" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string/>
+ </property>
+ <property name="pixmap" >
+ <pixmap>/usr/share/apps/desktop-effects-kde/noeffects.png</pixmap>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="1" column="0" >
+ <layout class="QHBoxLayout" >
+ <item>
+ <layout class="QVBoxLayout" >
+ <item>
+ <widget class="QRadioButton" name="stdEffectsButton" >
+ <property name="text" >
+ <string>Standard Effects</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_12" >
+ <property name="text" >
+ <string>Some simple effects.</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_13" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string/>
+ </property>
+ <property name="pixmap" >
+ <pixmap>/usr/share/apps/desktop-effects-kde/standardeffects.png</pixmap>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="2" column="0" >
+ <layout class="QHBoxLayout" >
+ <item>
+ <layout class="QVBoxLayout" >
+ <item>
+ <widget class="QRadioButton" name="extraEffectsButton" >
+ <property name="text" >
+ <string>Extra Effects</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_14" >
+ <property name="text" >
+ <string>Over-the-top effects.</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_15" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string/>
+ </property>
+ <property name="pixmap" >
+ <pixmap>/usr/share/apps/desktop-effects-kde/extraeffects.png</pixmap>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="3" column="0" >
+ <layout class="QHBoxLayout" >
+ <item>
+ <layout class="QVBoxLayout" >
+ <item>
+ <widget class="QRadioButton" name="customEffectsButton" >
+ <property name="text" >
+ <string>Custom Effects</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_16" >
+ <property name="text" >
+ <string>Use custom settings from another settings manager. Switching from this option to another will back up any custom settings</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_17" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string/>
+ </property>
+ <property name="pixmap" >
+ <pixmap>/usr/share/apps/desktop-effects-kde/extraeffects.png</pixmap>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="4" column="0" >
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" >
+ <item>
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="apply" >
+ <property name="text" >
+ <string>Apply</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="done" >
+ <property name="text" >
+ <string>Done</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/data/HighEffects.ini b/data/HighEffects.ini
new file mode 100644
index 0000000..06e18dd
--- /dev/null
+++ b/data/HighEffects.ini
@@ -0,0 +1,24 @@
+[3d]
+s0_max_window_space = 4
+
+[core]
+as_active_plugins = svg;dbus;move;screenshot;showdesktop;png;regex;splash;crashhandler;place;decoration;wobbly;cube;rotate;scale;animation;switcher;cubereflex
+s0_hsize = 3
+
+[animation]
+s0_close_effects = 19;9;9
+s0_close_durations = 300;150;150
+s0_open_effects = 19;9;9
+s0_open_durations = 300;150;150
+s0_minimize_options =
+s0_shade_options =
+s0_focus_options =
+
+[scaleaddon]
+s0_title_bold = true
+s0_title_size = 18
+
+[shift]
+as_next_key = <Alt>Tab
+as_prev_key = <Shift><Alt>Tab
+
diff --git a/data/MediumEffects.ini b/data/MediumEffects.ini
new file mode 100644
index 0000000..5bfd87e
--- /dev/null
+++ b/data/MediumEffects.ini
@@ -0,0 +1,18 @@
+[core]
+as_active_plugins = place;core;png;regex;text;move;shift;showdesktop;svg;screenshot;imgjpeg;resize;ring;decoration;expo;crashhandler;dbus;workarounds;wall;animation;scale;scaleaddon
+s0_hsize = 2
+s0_vsize = 2
+
+[animation]
+s0_minimize_options =
+s0_shade_options =
+s0_focus_options =
+
+[scaleaddon]
+s0_title_bold = true
+s0_title_size = 18
+
+[shift]
+as_next_key = <Alt>Tab
+as_prev_key = <Shift><Alt>Tab
+
diff --git a/data/extraeffects.png b/data/extraeffects.png
new file mode 100644
index 0000000..2d24c86
--- /dev/null
+++ b/data/extraeffects.png
Binary files differ
diff --git a/data/noeffects.png b/data/noeffects.png
new file mode 100644
index 0000000..7b06507
--- /dev/null
+++ b/data/noeffects.png
Binary files differ
diff --git a/data/standardeffects.png b/data/standardeffects.png
new file mode 100644
index 0000000..efc7982
--- /dev/null
+++ b/data/standardeffects.png
Binary files differ
diff --git a/desktop-effects-kde b/desktop-effects-kde
new file mode 100755
index 0000000..145cca7
--- /dev/null
+++ b/desktop-effects-kde
@@ -0,0 +1,33 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+"""Desktop Effects for KDE
+
+Without arguments, immediately loads the Desktop Effects Configuration
+window.
+"""
+
+__copyright__ = "Copyright © 2007 Martin Böhm and the Kubuntu Team"
+__author__ = "Kubuntu Team <kubuntu-devel@lists.ubuntu.com>"
+import sys
+sys.path.append("/opt/kde3/share/pyshared")
+
+if sys.argv[0].endswith("kde3"):
+ from DesktopEffects.DesktopEffectsKDE import DesktopEffectsKDE as DesktopEffects
+else:
+ from DesktopEffects.DesktopEffectsKDE4 import DesktopEffectsKDE4 as DesktopEffects
+de = DesktopEffects()
diff --git a/desktop-effects-kde.desktop b/desktop-effects-kde.desktop
new file mode 100644
index 0000000..f2a0b7f
--- /dev/null
+++ b/desktop-effects-kde.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Desktop Effects
+Comment=Compiz Setup
+Icon=kcmkwm
+Exec=desktop-effects-kde4
+Terminal=false
+Type=Application
+OnlyShowIn=KDE
+Categories=Compiz;Settings;DesktopSettings;
diff --git a/desktop-effects-kde4 b/desktop-effects-kde4
new file mode 100755
index 0000000..0c8f3ae
--- /dev/null
+++ b/desktop-effects-kde4
@@ -0,0 +1,32 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# Copyright 2007-2008 Martin Böhm <martin.bohm@kubuntu.org>
+# Copyright 2007-2008 Michael Anderson <nosrednaekim@gmail.com>
+
+"""Desktop Effects for KDE
+
+Without arguments, immediately loads the Desktop Effects Configuration
+window.
+"""
+
+__copyright__ = "Copyright © 2007 Martin Böhm and the Kubuntu Team"
+__author__ = "Kubuntu Team <kubuntu-devel@lists.ubuntu.com>"
+import sys
+sys.path.append("/opt/kde3/share/pyshared")
+
+from DesktopEffects.DesktopEffectsKDE4 import DesktopEffectsKDE4 as DesktopEffects
+de = DesktopEffects()
diff --git a/po/desktop-effects-kde.pot b/po/desktop-effects-kde.pot
new file mode 100644
index 0000000..77c74e6
--- /dev/null
+++ b/po/desktop-effects-kde.pot
@@ -0,0 +1,101 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-04-20 20:28-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: DesktopEffects/DesktopEffectsCommon.py:73
+#: DesktopEffects/DesktopEffectsKDE.py:96
+msgid "&Remove Desktop Effects"
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsCommon.py:76
+#: DesktopEffects/DesktopEffectsKDE.py:100
+msgid "The Compiz engine is installed in your system."
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsCommon.py:80
+#: DesktopEffects/DesktopEffectsKDE.py:105
+msgid ""
+"In order for Compiz Desktop Effects to work, the Compiz engine must be "
+"installed on your system."
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsCommon.py:82
+#: DesktopEffects/DesktopEffectsKDE.py:107
+msgid "&Install Desktop Effects"
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsKDE4.py:84
+msgid "Compiz Desktop Effects"
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsKDE4.py:85
+msgid "Install"
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsKDE4.py:86
+msgid ""
+"Desktop Effects are an experimental feature of Kubuntu and are not "
+"officially supported."
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsKDE4.py:87
+msgid "Effects Level"
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsKDE4.py:88
+msgid "No Effects"
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsKDE4.py:89
+msgid ""
+"All effects are disabled and KDE Window manager is used. This is the default "
+"behaviour."
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsKDE4.py:90
+msgid "Standard Effects"
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsKDE4.py:91
+msgid "Some simple effects."
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsKDE4.py:92
+msgid "Extra Effects"
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsKDE4.py:93
+msgid "You'll need sunglasses"
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsKDE4.py:94
+msgid "Custom Effects"
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsKDE4.py:95
+msgid ""
+"Use custom settings from another settings manager. Switching from this "
+"option to another will back up any custom settings"
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsKDE4.py:96
+msgid "Apply"
+msgstr ""
+
+#: DesktopEffects/DesktopEffectsKDE4.py:97
+msgid "Done"
+msgstr ""
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..096d2e4
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,56 @@
+
+# setup.py file for desktop-effects-kde
+# by the Kubuntu Team, inspired by the Restricted Manager setup file
+# -*- coding: utf-8 -*-
+from distutils.core import setup, Extension
+from distutils.command.clean import clean
+from distutils.dir_util import remove_tree
+import subprocess, glob, os.path, shutil
+
+# for kcm modules building
+import kdedistutils
+
+mo_files = []
+# HACK: make sure that the mo files are generated and up-to-date
+#subprocess.call(["make", "-C", "po", "build-mo"])
+for filepath in glob.glob("po/mo/*/LC_MESSAGES/*.mo"):
+ lang = filepath[len("po/mo/"):]
+ targetpath = os.path.dirname(os.path.join("share/locale",lang))
+ mo_files.append((targetpath, [filepath]))
+
+# build .py files from the .ui files.
+for file in glob.glob("data/*.ui"):
+ subprocess.call(["kdepyuic", file])
+ shutil.move(file[5:-3]+".py","./")
+# patch desktopeffectsdialog.py for kcm-specific fixes
+subprocess.call(["patch", "-p1", "-i" "data/kcm-fix.patch"])
+
+class RMClean(clean):
+ ''' cleans up the hacks above, mostly '''
+ def run(self):
+ clean.run(self)
+ if os.path.exists('build/'):
+ remove_tree('build/')
+ generated_files = ['applications/kde/kcm_restricted-manager.cpp' , 'RestrictedManager/ManagerWindowKDE.py',
+ 'RestrictedManager/FwHandlerBcm.py', 'RestrictedManager/FwHandlerProgress.py']
+ for file in generated_files:
+ if os.path.exists(file):
+ os.remove(file)
+
+kdedistutils.setup(
+ name="desktop-effects-kde",
+ author="Martin Böhm",
+ author_email="martin.bohm@kubuntu.org",
+ maintainer="Kubuntu Team",
+ maintainer_email="kubuntu-devel@lists.ubuntu.com",
+ url="http://www.kubuntu.org",
+ license="gpl",
+ description="enable and configure Compiz effects in KDE",
+ packages=["DesktopEffects/"],
+ data_files=[("share/desktop-effects", glob.glob("data/*.png")),
+ ("share/applications/kde", glob.glob("applications/kde/*.desktop"))
+ ],
+ scripts=["desktop-effects-kde"],
+ kcontrol_modules = [ ('applications/kde/desktop-effects-kde.desktop.in', 'DesktopEffectsKDE')],
+ cmdclass = { 'clean' : RMClean }
+)