commit 19f9c3f434e0648b1952102c819ebee45de6e1e3 Author: tpearson Date: Thu Mar 11 08:10:59 2010 +0000 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 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 . +# +# Copyright 2007-2008 Martin Böhm +# Copyright 2007-2008 Michael Anderson + +# 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 . +# +# Copyright 2007-2008 Martin Böhm +# Copyright 2007-2008 Michael Anderson + +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 . +# +# Copyright 2007-2008 Martin Böhm +# Copyright 2007-2008 Michael Anderson + +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 diff --git a/data/BlankEffects.ini b/data/BlankEffects.ini new file mode 100644 index 0000000..e69de29 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 @@ + +DesktopEffectsDialog + + + DesktopEffectsDialog + + + + 0 + 0 + 697 + 527 + + + + Desktop Effects + + + + unnamed + + + + layout17 + + + + unnamed + + + + packageIcon + + + + 32 + 32 + + + + image0 + + + true + + + + + packageText + + + In order for Compiz Desktop Effects to work, the Compiz engine must be installed on your system. + + + + + installButton + + + + 0 + 0 + 0 + 0 + + + + Install + + + + + + + warningLayout + + + + unnamed + + + + warningIcon + + + + 4 + 4 + 0 + 0 + + + + image1 + + + true + + + + + warningText + + + Desktop Effects are a great way to enjoy a modern desktop experience without transitioning to KDE4 + + + + + + + effectsGroup + + + Effects Level + + + + unnamed + + + + layout5 + + + + unnamed + + + + layout4 + + + + unnamed + + + + radioButton4 + + + No Effects + + + + + noEffectsText + + + All effects are disabled and KDE Window manager is used. +This is the default behaviour. + + + + + + + noEffectsImage + + + + 4 + 4 + 0 + 0 + + + + + 150 + 80 + + + + image2 + + + true + + + + + + + layout5_2 + + + + unnamed + + + + layout4_2 + + + + unnamed + + + + radioButton4_2 + + + Standard Effects + + + + + standardEffectsText + + + A compromise between usability and efficiency. + + + + + + + standardEffectsImage + + + + 0 + 0 + 0 + 0 + + + + + 150 + 80 + + + + image2 + + + true + + + + + + + layout5_3 + + + + unnamed + + + + layout4_3 + + + + unnamed + + + + radioButton4_3 + + + Extra Effects + + + + + extraEffectsText + + + All effects are enabled. This setting may require a +newer graphic card. + + + + + + + extraEffectsImage + + + + 0 + 0 + 0 + 0 + + + + + 150 + 80 + + + + image2 + + + true + + + + + + + layout5_3_2 + + + + unnamed + + + + layout4_3_2 + + + + unnamed + + + + radioButton4_3_2 + + + Custom Effects + + + + + customEffectsText + + + Your custom Compiz settings. + + + + + + + customEffectsImage + + + + 0 + 0 + 0 + 0 + + + + + 150 + 80 + + + + image2 + + + true + + + + + + + + + layout12 + + + + unnamed + + + + spacer4 + + + Horizontal + + + Expanding + + + + 530 + 31 + + + + + + applyButton + + + Apply + + + + + cancelButton + + + Cancel + + + + + + + + + 89504e470d0a1a0a0000000d4948445200000020000000200806000000737a7af400000726494441545885b5976b6c14d71580bf999d7dd9bbf6627bf162136c2041d03a813885b850c0a19153d1a6aa286a09fc71a5a4adda2849a5fe68a5280912adaaa60d2869a30a50a8948241495d8aa19050102aa2a6c1061bdbb163037e2d6bb3d8fb7e8c7767e7f6c7ac1f0b8660a5bdd2d13c567bbfef9cb9736606e63044232ed1c81ba291a068e4c09dbf6b4770a50ff3c6c45f70cd65de0785d78b4682a2e5512142db8568b28a833f63f31df02ba9a3c522b49fcecbbb28fe5f82fbc5bf960a11fa8910e21742889784e85d2b82efd302e4694770a51bb8a235af1342bc2d52976bc5ed3fe0f5bd45f5e7cd2fdd075c0bbc4e61452d8f6d85927220968d04a4553873987397623ffdda23bc20556e5865aad901048110a9ee4b844e9d89f6fba9abf90d171f58403452091c20afb49615db60d11a209a8d181007610888beab643a5ba0a216a5a63e0b0f021148c798e8f98cd03f2f120ca47fb462177bef2b9005bf8ed959cfc3df87e5cf1913e5c0b302713fe2d219f47008212964a422cc6bb723173b8010e8515013a0c649fb46b9d5f41f466f6bafaedecdafee149067ecd7535253cf33a761f9f34006d06744061241683d85387d1861b1637a7213cafcf9984490f8b13d64c6fa0115b414a427209dc2ecb4e2a9abc2536adfd5f6320df713f8b31eea8e900e65e133221d879e3370763fc4c3485f5a835cf108982d60b5a114cfc33adf49e4e841d48e8e29b8b19d40b14894ad2fa7709e79db85e7f9e0ea8fa76fd32901690b039a1a7e9bee3fe6667ffd347cb413865aa06c09781681cd6ec0150b586c60b56359e0c6b9fc21c21f9f2771b57786842122a351b9de45f942656b34c911c004a0641b4a3bd006fc5e1f6c7a49aed854406210ba0f423a022e37e4bbc096678027e1e6ac80ae836c42c97350b4a18af1e66e127d5e4a6a2a21352d911c53898c66e8f2d30c5402d7a5ac403d855510ee04086176b8c824c1ee84fc02b0e619705b9e91fdcce3914163c1994c201ba16b829b475b30e79bf1ac764332417234c2b533612e0e8a9d3f3c491330008ccbd2167e1088f121e8f0cc71d8f4ae8b05d9fe61b14d673a9975ceb10dcc7960352ec364c8054eca9fdb88b039b97ef406315f6c5678ce6dd8b1879f572d75bcc9fa57a1d009adfbd1bd5d489e0a2467e18cacedc6d69a074a318c0d82160193325581a96a984cf4fdee38f1c100e934516f88a67c196fbecc4846a34d6468cb6944c3fb7871a1c7fe0e353ba0c4857ebd85f427e731afa8422e72e7c22d05209543a40f32c13bc00a91ce617c7fbd886237e17eac0499345a3841a83f86f78a4a4623dc17e29b7775c2f6dd7cbbaa9cbf53fd14b2a71cadf753d4f6abd86b6a30957a8c32dbf2419e8f48b9497d7602eb52f79440e2c62d6e9dbc8c1649b0a06e050e8f0d9271b46018dfbf47b97929c2c09838f4db76f6b58d139af559903e2c894c1a4c55d52825c5683e1fd1d66eec4faec6f6e89711ba0db5a317b5e30262228175d9322c2bd7e03b749689b118eeba6ae6ad2c87640c923146ce5e67e8f430370399a6f77bd87774001fe0077cb30aa40e2b4229c827e98f23b98ab02f29431b0b10b8e2c5beaa8accc8207a340c80ae417c0c26543bf336acc5bdf909d023908c3176ee53868f7793f02739d4cbf6773be9cd2e3e1f90ca59843387da6015d67237421744aedd46cfc8989d56242d45c4974408b016801a0635e9a070edb798b7711d26bb0a04887677e3fde0222238cec29556daff1663c331be02740389992c6536011d13d8f39190285ce9241549920a2451e3022d9d424b66480421a381b37a03265729c9a19b68713fb73e3a8b3ae4a5acba00f7463720c868b1c9a91377b26617102663a14946812c7607160f38902896408ba5484f94a005ae911c6b21d5d9c2f8701c5d03d76207a54f2f01218cc010bdd7b887800c76c78c0b2465f78d138add81a23c04c5119c0f0b1050fa5531036a9c33b602a1cf51404b024a01983353559896c8eecb36a34a53c0e98c7345c4bde9f71298180fb7852e74ad726d5a0d569193fd9490b041262f37e3bb64262b3147015de3a9e18efe0f93b7c35f2fddfa0de412ebf48f93029a0d445e4ea9efca3a0dc1b6e07d05eef9520a985a5fe1484959d17717ee7816d95300b294fd8b049a0bd2fdcc5a7e35833a18a3ebbd4ff0f7f87d2de3bcf55a3be780d6b9080070ee05f6780a2d2f576cdb82edf11546cb45022c206ee456209942ed0b70a3b11d6ff340743841c33b3d34b40719078681d09c05004e6ce7954545d6dd4b776cc7beea71e381848ef15415104fa00df9193a79951b27bb188cb3370b0e61b4dc5b18af59778d071200f8c7f778b1d8c2af176f7ed6e9fece0eb0cb10ed411b1864e8d42586cef7301a4a3535f4b3ef98171f30723ff09c0500fef4341bab5c342daead7396ad5fc748f3597a4f34138ca65a0f5c6367169cd3eb3f6fcc4900a0a18e9a52331f2b669b3310565b2ff8d9fb6617ad181f0f030f0afe42e3972b59b07b35af014f00cb00e7ff1d3acb30c117ff02fe2f0f8e779b06e96c8c0000000049454e44ae426082 + + + 89504e470d0a1a0a0000000d4948445200000020000000200806000000737a7af400000554494441545885d5975d6c145514c77f776667f6b3ed6eb76cbb9b5d4a294a2d05317c2bd2184404da0a41242a51e189a0848444a306a244e39b823ef84222890f44239a182a1a1334f1a3044b7421e189ef60c1d0164adbfd9aeecef56166b74369a12d51e34dfe99b37b67cef9df73ffe7cc5c21a5e47f393a5ba8eb58c5744001c464fd28937928d9ca1eb7c2f980c6b98e55bc077826eb4b9de8039d2dd4690a5f856683b71acc1e9696697cf3eb357a80c244fd4d98b5ae7040f540f4710baa07d626f8082863120b9a1081642beb0434170317890434e67ff2084f035e26a88709111082bd9e6a082d99030b3b616127a12573f054c3ec10bb807240fb4708245bd923a036b6428169bb41895898b69bd80a05b742b47d396f02be89f81dd79e75b650e752385039074fd59a8d50fd22202de83174df1586ae9c46bb4e83cfc5f7c7bae9669c821c17819767b24ff3b228f14c19eaac0f39f6db55dadb3b3971e22cf9bc49e2fe87f1685f723369b8633ae14fcff11d90b359de1b813f5a794c15ec8d2c53285ffe2ad7f30b387a348910024551e8eaea21188e13991a42def805f9270d8d414e7ddbc559207f37ff77dd2b45b0570f4164f50ca85c47363b08809412d33401e8ebeb83ca754456d7a387606115bbb104e9ba2702c956360b7830da22a0e6155075745d22a52c11304d937058075587e856a22d02afcacc83cb7809ab2cef1863ccc9536d0415c107fe7a285fb20c02f3802c55551aaa2ac9e7f325c4e33e200d8179942f5a80bf1e1a2b78a32d4182bb94e598044cc9db4030febc0fa6bc00420259204b6d6d198661601806c1a086db3d0464401420b289f8733a8aa06c5b03af037eeea0b5510974b650a708765435833e6d25e80920650521432ca691cd66c9e572c4629a3d970206c01d45af7d94aa668879d9b4bd8126c0cd181d725402bac201d50b91b630543ce10890020649241432990ce9749a1933742b30fd360620d44ca43580ea8567eb781f088c9585db0894fafd06506b9683ab6cd83103c020a1508e5048924aa5a8af978ef97ee006b8bca8358b886eb8fb7be2b6321182bd9e04849a6bc03f1fb83e0a579378bc40a160027d584daf000c010690077f23a1659df4fcd8cf6c935dc0d758cdc970c6bb252dc956f62882a7a66e05bdee49705562ed7bd64606480359eaea04b366b9f0fbb3a5adb1ae69cb163950153ce1cb0c7450b6268ee7e0057eb609c8db089c6a2388e0b3caa578aad64c05df5cdb598ea2f8acdf192085ae674609eeb407c0e5460ff630d49d45bb4ac3e53487cef4731347872ce5d594ec73f9a888ac17e0bbcf4e7daf0da7ddcb91239758b9f2248b17ffcefefde7c7b8b7cf82af86c87ad0fc94ed6ce41d4694a50a8e7edf06e54ba2a08547a43eed408a2d5bfea2b7378b61187474dc64ed5a93f2f2e1f9e16ca5413151bd06d230906768680a72f24817e78a5970012882b7f429106ed1400f003d36b7d1aa54924e0f924a99140a054cd344ca82bdad05c0b4e1b0dd3ae116851b3f99cc1d6227f083ad852135d9ca6645b023be1dbcd303a00ac7ca8bc2730a3043286470f8b0413e9f67fdfa21366ecc95c4793b72200c144da2474c32c7883557d37be8124960489c6ce362a089dae9ef025480706195ab13d2be9aa52c0cc31c6163af5ede0a6965e4fc2eb87e8aab0bda59085c7309a855fd903a0d4229a64d8028f60c67efb0ab47ca922d4b2977fe3f32f8f0fdaa1fdc0a51acafe83e57b6c0c71c675bff71106a1614b5145c3889388e70d249a408216e0984fdcabee5a3c8362f0cf20596c01401785e6be2a12a370f18262e534efe98359e71ba8f2b9f5fe4127003e81636133756afd6b88773de3887c4ead91920e7dce822997f6394942bfeebe3f9dfdeac06dfae15d7560000000049454e44ae426082 + + + 789cccbd47b7eb38b2ef397f9fa2d6e5ecae5e7cf266d0035266cb6da7ed77af1ed07b2f1aa9bf7c83883f704c56d5cd7c75bb5f95d6c9ca5f8a22114044202200f0fccffffcdbe7d3fddffef37ffe8fea625c02eb6f966f947ffb4fbb4e92ebfff57fff9fffcffff88fe160f0b7fecf68389bfe6df41fffc7fff80febf96fd6df9401ff5fcff64232ffde36244f7a762ac953fefd56f29cf35cf2a267f3072ff9f733c906e7836493f35eb2c59fd74ab6797b1f243bfcfb46b2cb7fef0a1e72799c5af2907f7f94cce5732cc963fefd483297cf3a8387d43f992999ffde0c25f3dfb79a64de5f662099dfcfe924cf386f24f3fe4a44ff0fd17e5b327f9e772799dfcfb8078fa87d662499cbebbb9249de6fc9bcbd9d2f99dab795ccc7b31a48e6e3b71a4ae6e315ed25f3f1b04f82a93f0dc1636a9ff32999daf32599f757a54ae6fde17e48e6fae23892b97e78a2bd63ea1f438cef849e97e892f9f7652b99b76f3d91cce53763f0947e6f08fd9c1137b664de5e43c83fc7f53bf0022cf475499c8be719c4f113d824de5cc01671fd0eb6895dbaff50d8ab174ae6f2ad3ac9a47f63c924df4832d73f732a99f777f324998fb73993ccfb5f7f96ccc7df3a49e6e3514592b9bd3aa664ae1fd6bd646eaf9a2b98f4ddf52573fdb58e60d89f6d49e6df9b13c97c3c1d45326fbf634826ffb2934cfee40086fdf88164de7ff65232d9eb9b646e1fa607867e9bbe641a8f816092cf14f2423f4d070c7d8b9f25f3e7bbaf60e89fb791ccfb3b15df43ffe22f30f42f13f240ffea1b18fab716bf877ee967b043dc92bf1f0ea16fdd9af3a8f740bc3dbe64f2f70bc9bcbfcd2fc9bcbfbd4432f90b4730f5cff55e3297bfc9c0187f732899f4772099c6e35b321f7f6b0fc6f8daa6649aff7692f9f3724d32d7f7cb4932ef6ffb4e32e9b302c6f86723c9dcdefc50326f9ff32e99f7975382a10fd75c32d7e795906742fdd3bd49e6df67a2bdd09ff20886beb89164fefcd54932ef9ffa2c98fca72bda0b7d6a9f25f3feb0c4f842bf9a07b0d02fd13fd0afe2090cffd6c660e85b24ae87be05a40f63e1df8277c9bc7debab643e5e575732efef6e2799cb1bfcf89ecbdbed2573fd5cfd781e1fcf952d98fa3b91cf277f74cd24f3fe0f3ec08807ba8d64ae9fc54232e98f27993faff9f13df787ae680ff4d57995cce57103c95c7fac3bc97c7c7c5f308d67b8028bf9f72299cbd3dc49e6f2981f92797fd69664de5f7e2499dbb33b92ccdb6f2dc1d067772099fca72e99b7ff6a49a6f946f437f4b9bd48267934b0d0ef77c9bc7dad68df9cee9fee25f3fe69447fcc31df88f1843eaf6e92f9f3da89649a0fee25f3f1cb85be41ff0331bed07f5f8ca7f0a7d43f13a1df9d2a99f777f32899dfffea80111faeae92b93cee41f090f7effa0c463ce77f48a6f9ee51321fafeb4930f547bb01433fecb164fe7cff5b321f2f2f92ccfb3f93d793bd745b30f421ae2593bfd94be6fd1b2692b93cde4e32b79fda164ced8ddec1d017e74332f9dbb564de5e772899e299140c7dcaa692b93db8df92797fe61d18fe3117e303fd59b792e979b164de3f8918ff05f5cf46f40ff4c715e301fdb9bd80e13f57f792797fad4a30fce906bf17f3f51ae331c4fc19a13d43f89780e693a9f0a7ed028cebfd4e321fafe6198c7cc00b2473f9bc77c95cdf4a4ff0908fc75a5c8f78bfb52553fcf02999ebbfdf08a6f10e5ec1c2bfdc49a6f97c2b99e6ff27c9642f3fbee7fab416f2407fc299643efe912f99ec692099cbd3b492b9bc9ab8ff94c63711fd0bfdb2a792c93e2ac9140f689229df5125f3feed5660e85ffd2a99fce34432efdfee00867e5e14c9941f8ec0d0bfcc904cf9572a99b7a76e25f3fe73c760a1afaa646ebf99e85fe86f2ec61bfaea0b79e11f0ba12f2eda8bfb4b7d267b98897c64dd81a1cfeb503297afbd934cf1d45e30fc93f81ef363b896ccefbf3a4a26793dc1149fae7d30f247ff2a99ea1d3fbee7fed68b05a31eb1924cf9c2083ca5f6076bc9542fd948e6fa900e2473fdbbbc09463d630246be1a6692f9f84481643edef95532b73f5df01cfd7993ccdb7be92453beb5924cf3c14432efbf5cfc7e01fffa2999e6bfb1646e5f9b022ce2cba364de3e37114cfec132c0d047f74d32f9e37b30f26b2f05431f5763c9bc7f42c1d04797e6cf99d0c71be41fc21fa52a18fe24207d9f0bfd5a1d04d3f8570fe009d573dca3642e7fbb054f697ca237c1246f3a944cf53a5b32c5a72f60f81bd796ccaf4f2bc994af2d2593be6f2453bea682e7345eed4e32d5ff14c9bcbf2f57c95cff7dd15ef8a35097ccdb93cd25537e2bfa6b3124fffd055ec2bfcc24537c548045fe518331decda7647ebd2eda6ba37fc478c01f6d44ffb8d43e1ded17e3af3960cc97f5022cf481e257a6dd149fd96bf08cc6ffe64aa6f92604c35eec4032b7efab2799e2375b30e94b2aae5f50ff58aa642e6fe148a67ce1065e927fb80d2553bd2494cc9fdf3e49a6fc45c863c07e1dc97cfcd3a3606a5f7d05633e887682497faf4bb08df8e2030cfb2bc9de17a2ff4bf49f886762f4cf10f666bd80618f3e8dff92f5177f5e914be6ed2f36e005c91b5f24533cf22598ecafeec04be467ae64f28757b041bfaf5f040f29fe68c0268d9726da63917e14a2bdd0c7f424998f5f44fdb314fd91bf83a18f8105467fdc4660e86783e789fee94a30e215e3118c78a3a0f9dc60fd45fa34072f491fc329d8a0f685a964aae7dfc0265d5f2f05537f568f60d86bb091ccfbe36248e6fad988dfbba85f8e24533e48f66f88fe892b30fa67634ba6f97508467f6d1cb0a827435ed11f35fa6388f9c9a7f8c814f157fd065e92fe5f6e6083e42f5cb0897ac417d8227dca3fc036f55fb305431fba77c1747f3b02bba4df3ad9ab29e42f669229df46fb647fe460d8d3aa0243fecd2758d4bbefc0a21eb403a33f2a8a772c263f6fff35055ba827d1f85aa2bf2f1a58f4f70a8cfb252a18febdf1c0f02701f58f2dda7f5d48a6fe9b8071fff21d2cfc83603caf51c1b87fb106433f4b1a1f87fd17eebf1b17ec903efbd43e46b0f71a0c79cb2d58c4e72d18cf2f1bb078be0dc6f3339abf5cd11f8906c6f5de1a8cf846e3f6c1cbe724df068cf6548964ae3f1b130c7f9096608c7f7603a3bde90e8ce7bb2f60b4d77e00c39f075c9f98f639e47fa34832d7e7f84c2c9eb7ba80216ffb08c6f3cc042cd64f1a30e42f9760d88fe382d19e1ced19c11e42aebf0cf17cd306435ecb04a33d610e16f20b16f1470a16ed3981457cf9443c82bdae2660e19f79bc341c8be7d70e18cfd71ec022df8ac178feaa05e379d72bf108e3df70ff369cc8fe1d8345bc9c81d1fe60452cfaeb7a03c3be74ba7e2adbd382f1fbcb3b18e3910dc1689f4df24e657fd4603cafb2c168bffb0cc6f32b1ebf0c67e2fe01e9d34cdcef1283e12faa6f30ee67f860e1ffe660a1efdc7f0ee7e2fed58c58b6e70cc6ef8d002cd6173db0a83f2dc0d0b78edbf77021e5bd078bf6aec1f87d41fabd14f2155bb0f8fd108cdfeb2330da93de83f1fc8ac6d310f2ac1a309ed772ff3734c5fdb48d64ee0fb72e58d4e75ec0f87d7202a33f0d713df4a5237bb7e4782a60b11ee681d15eed112cee1782a1cf158f4f86b6b8bf6581c5fa2af5a733823f762d30eed7d2efdd11f2efcd1d18d76bdc5e468311f2a3c007e379f5082cea75f760e8fbfa8d782cf49dfba3d150fcbebc030b7bdc83a17f099faf472371ffe64c2ceed73460e883cefb6b3416f7ab4fc463e10f2c30e46b8927e279b94b2cee6f6cc1d087ec092cec4930c6f342f24f85fc46442caef75660e8cf85fb93d18cfd9ec783f1162ceaa37cfe19cdc5fd3ceabfb990d79d80d13eeb152cd64fe9fa85f8de7c05a33df9188cf66cbec0d0c7f50d0c7df3b8ff1f2d85bcce002ce227078ceb1d0f2cfca54e3c41fb6f74bd21ef5780f17c5d058bf53beeaf46e618ebd77a2299c77f5bba9f25c6b7f4c1c2bfbd80d19eeb07f104fda1933cb678de2603e37eba01c6ef6f57b0a8ff71ff3d72c6a8b7e8d47faee88fb507c6effd188cdf3bdc1ec67d38c739e2e3c5a63393e21723269e60fde4f22c99d677b93e307577285eb7b8fd8f27ecfe9cf50e0c7d8a79ff8ca7ec7bfefb6b412cc627db81c57e823730ead9eb1158d43fb8bce399b8fe7a0716eb5d7330c663c3fb733c67eda1fa484d2cc6c39a83a11fed193ca57a651282b13e16f3f96ebc9860bdc8d880c5fe810c2cf21bae8fe3e544d4cb23c93c5ed30a30ea071b170cff92d0f81813d443d71730eaed9a07c6f53eb7b7b1c9bee7fa117c49a6f5024b30c5b3760cb6b19ec9e3adb13331e8face93ccfbaf3883f13c23013ba8a72e05d3fd0d1b8c7c734df23b53d8df86facf9da03e7e1b80f1fc82f7e76430813e6d63e229fa3be5e333194e4cd40b52b04ded31b8fe4e4653110ff2fa0a73a736f28d9a788afd67fa180cfd6a1db0588fe3fe7f32610accfb77c3f59721f2c77c493cc5fe0aaf00e37eb731788afa4e059ed1f8361f60d48f6dde1f93d914ebc7460a46bd2fe4fd37994fc7940f6cbec1e89f98cf5f93a578def5013c433d86da6f4c51bf09b9bd4dcce982f2b39cebcbc49a22fff6b83e4dec29ea15d95932adb704c433acffebf43c776ad1fd039d7886f5d315bf3f5356f09acf77d3d1d4a5fa65734f3cc3fe035d134cf7372c30ec355b824dc413dc3fb0e9906574dcdf79c4e2f74501c6fa5b74104cdfb73c3e9d4ea6d6887f7fdb10b3e791bef1f9940ddf1ceb078fe005f5b7c5e7e3e96c86f58f8d0246fd3a76c1f311f9b377b043e31bf07c693a9fa1de19df816dec07f804bb584fa3fe5accc47a86069e517b82002cd6f775b043f39bc6e3dde9923d8eeb7332035bd47f3705ec60ff824d3cc7fecf84ebefd498c19e2faf609bfa2be6f9f0d49c2d51cff5c016e5fb2b176c8f78fb8b15d8a5fa99c9e7d7a93543fdab1b831dfafde6287844f5d10e8cf1af49bfac39c63bff024f499e98ee6fb3fb937f7d023bd4fed407bb435aafb124d37e2d5d30b53f03cf87d43eeb0d8cf5dd7803c67cb7e1f63d75587f707df1e9fece7c30a2fd5d7b30f6b3469f9269fdc792cce5594dc1587fba52ffb84c1edebecd5e326f7f41faebceb19f2cda8271bfa6133ca2e727e0118d4fb2164cfa9c2892f978af4c30eca1f1c19321d7bf2bff7e3660e34ff5e53bb043cfaf5dc174bf6c0076a97fdb929805acfcfb6d0446bdbee4ed9f0d857eddd660f89b6e2298da5f05c4ac3f687e6bc0c311ad87e07a263f9f0fda77f094da537f8067245fc5f569369a1963d29f2b31eb5fdabfe20ba6e7a777e0d188ff3eb9815906c29fa78227d04f053ca3f6b65c3f6663260fd553a93d2cfca4fec91bc95cfeea041e517f5fb8fece2662fcdd023c86ff33c1d31167cd06cf21cf5c308d679d8017d41f0df72fb3e9cc1ef3ebab14ec8c69bfc05432ed47d38885fe5d4cc9b4fe37028fc8fecb37c9649f25784cf6ebbf82e7f47dbc042fe87e05f5cf4ce8936b82e7f4fb36113ca6f17a002fe8f986b8de80fe8bef4dd28fc292cce52fa68269fc4d1effb0db2f49decd0c0c7fdc92fe2ce6131a3f6d2d98fcb7bf02cf49bf370330d68fea5a30fdde38831dfabea3fe59b2fea178b0009bd41e4f03db23aeff37713decb5f00593fc2df5a7c1ee47eb6f2330eadd17156c8ea87ff7609bfc45590b267f78d5c02e714bfa6ab2f1207ff80136c87ef22918f34dfe06c67cd186c48b018dafcee3cd99c5ee47faa48217647f99609bf4c7a0f1b2160392afa3f6da6cfc68bcd69279ff949f6093daef4ec1f067f5817831a4e76de8f70ebb9ece177c806d6abfb3235ec0dfba2bc9b4df9bc6d7ed1376ae5f5c3fe703263f6f4f520a1e53fc99102f66d4be8cf7cf7cc8e4e3d7673e784c7cdd82a7d4de5a03c3fe751e9f3265c2fca09be009d94fc2e397394b87c99f186bf08cfa4fe3fd3b9fb0e7717dacc792e97c0b8f5f58f8bb20d6793d613e5f2cc7b49fc5005bd49e35b56fb1c4fcecf1fe9e2fd9f7743dfdde582ca83f8267b049ed59f3f9686eb2eb69fd782699d62fa83de67244f67de1fa3eb79643b237ef2698f4ab9e8347d4feb0008fc99e1c6a8fbd70d05f4762261e6f9f46e3e730a6f3160618fdbbe6f9c6dc5d0ea8bd0df5bf6b88f89aebdfa25f00a5f8ff4e32edd749c0636aff66019ee17939780e7de2f92a73f643e8bb031e537b7c133c237bf5dec073ba7f44f71f1a225ea3e78f447f79dfe011ddcfe3f22dc68c29feff06e379ba0e9ed2ef0b1effb1747d44f3b1fd0d5ed2f78d0236c65cdf367c7e5fb0009858bf07cfd15f7bf082f4a3492473f96f19d8257b6df8f82e66cb05f55fbe223630ff6f797cbc98b3f67079527afe82319d17e1f6b7581a03fafdc693ccc7d7a0fb194b97da7bbb111b63f2af1bae9f0bd31810eb7cbd61612d1dd2bf94da671943c8cfe7af856d8c69be6e0563be594f2573fdd7b8bd2c1c763ded0f53c01392c7bb4ae6fdd3717d5db8c684fa4bbb134cdfa767f094e28180fba3e5c080fff15fc0b309f5ef9764d24ff13dfc43cae7a3e5d0807d6cf8782d47acbdfcfeed0b783ea1fad50ebca0ef6f3ed82079a32f30f2c5644f6c627f5acce7df655fd0e1e3930460a662dc3f1cc14beaaf40133ca178a8069bf47cdf90ccc74ff3c10e8de78dfa676c8afd09b564daff5982b1ff36a6f64c58ffd2fed40b7836a1fac504bc9c50fd6101c6fc97abc426e2b3700fc67911f3018cf33ac99d643e1edd198cf3176e07463da4fa0063bf8826be47bd53e7fe773965e345fded806db217eb1d8c78f29612b3f6923ea9603cbffb0663bf4949d7b38083c663b3022f68fceb7bb043f6118682a9ff8c02ec92bfcbe9fe7dba49f5c30d18fb636c9e2f2ce7ecf7144f2a6097e4bbe5c4ecf7140fcdc0b0b734018bfde03a784af3c53504cfb15f47dc0ffb0bbb8160ecbffc002fa95e58edc1d8bf1a4dc1163d2f36c1a8575495609c5f1a4aa6f3a134febd83e2ed2f376093faafa3e72fcc01f1f50b3c217ddd5660ac37ad63f00cfe5407cf69beef5230ea35c6026c60bfe55532e55b39d8a4eb6f73b0d8df20ee6f637fe04a32cdff03b043fd757b904cf9d9168c7ae7ed2299ce7b3692697fc898d8c2f99ddb128cf3b317f49f85fa6348f75f1a06d9afb604c37ff817b04dfa1c0ec10ee9bb4ef22ecd015d7fdd8047345eb5079e907e598e60d2d7b40363ffe3762598e2d5750e16e703d692297ffc128cf35768af897afb36108cfaee5c32d56b0f9269fe2e24f3f61731d880ff5125d37ed80558ac974c25d37ec09d64de7fe64132f73fea27d8a2f15732c9b4bea008a6f655a23fb1dfb28c24d3fe470d8c7ae1ed5132e95b2099cf8fa6e82fd4e3c32fc9b4bee3125b38ef7723ff641816d99b7d03dbe48fc22bd8a1f9f95a825d9adf4af28706eb1ede5eaf060fe97aaf133ca1fc5605237e6d8ee009e5bbd5198cf58b4efc1efb6fb71730f67bae66e025c5df8a09c6fecae020998fafd248a6f3ba909fd93b6f4f71025bb0af52329ddf9849e6cf533fc036e993924ba6f96726993f2fcec00ef57ff12e99e2c34a32ed7f0cc1f017d5bb649aef7cc9bc3f22f13c97fa4fc3f859388f5a6d25f3f69443c1d86f3b06e37c4be54ae6edd354c9bc7dd791643aefdc4aa67acf2b18e7f134f13dced325a4ef26d3379affc95f9826e2cb952a99c6f7153ca57835fd0463ff691108267fb579028b78c2001b34dee14532bf7f62814df88b4832d52f2ab085f59d0118eba3752899ecff2699eae307c9b43fb405431f9454329d2fbb97ccdb938cc02ee95b2adaebd2f8b590dfc279e448974ce3f12998e67b4d30ce074713c934ff403e0be72d2dba9fc5e607defeca014fc85f5413f094e2313b954cfea0114cfe467901233fd41792a99e6a49a6f527c198afd71bc9549fb9822dea8fba944cf9502799dad782b17e6d7592c9be6782495fea42321fdff8c7f77cbcb477b043fa1deb9229ff4904e37cc697641a7f0decd27828aa647abfc45032ade7b982495f13b25fcbc2fb0c944032d9cb93606abf5949a6f314cf60bc4fc00a24f3f6b79960d29f5a914cf11dfa53d87bf82999d6df303e16ceb755a4cf369b3fc8ff7660ec3f57de04933ff0f760ac5f665bc114df2b67c1a44f57156c507f5f1cc9b49ff3198cfdc69bab60aac7ac4f601be7fd22c1781fc95132ddaf95ccdbabd492b93e794f60e883229e87fd9ef959326fbf3a964cf9e00318fe5d9d4be6fda192fed916ce83a92f92a93dbe64ca8fd11f229e4c6f92f9f3938164ca1f4f82b1fe994ae6df871f60acf79a6bc9bc7f62f49785f3b1b75230d95775914cf30bfacfc279b22df90f47c413a621995f9f7be011f99b6d2b98e2136d021e4f683d63059e4cb83e7ae2fa19dd4f3b83e734df943118f581f22099cba33c8397549f592dc026d69b8f9279fb6f9f60e453d6156c537f5a63c9644f8160aa47695330fc8dee0aa6e7c5b964f28791648a6fe692297e580aa6fa6628da8bf8c3bc974cf9642118fa38954cf58f89649acf1692e93c27e9936361ffbdd149e6df2b9e609c1f7d96ccf549ad24d37974e887d0676721998f8fba924cf1fa9364b247713df687754f92e9fc672399ea45a23d581f35af92f9f7b9f81eef13885ac1181f4b32d5dfa10f16f6a3044bc974dee9158cfd3f892399fcbb2d993fff26fa6786fd3ba23f711ef146d7bbcc7e283f7b944ce7995ec0639aafab25784af671db0a9e52feb200cfc9fe320f2cec650f5e52beae7d49a6f319e2fe4bd457766083f453bf80b11fa878154cf6b2adc1585f37c4fde0af235530f251717fc45b9e90d7c17ca848a67add5530ad1f74a160aa8f76e279c8e7c34630f97f3b174cf2379a645abf247fe35a781f90ff2818f3c1443297571d49a67cfd4930cd87da1b58e8ff5630ece74b32cd1fa564aaef7982697dc87900633f73694ae6faa0be4aa6fd789a648aa724637fd25a32ed3f79924ceb3d3330f6f325ad64de1fd98364927f2598facbd42553fd3594ccafcf311e16cecbdf22c95c5e652a99de7f267e8ff3c9e1bb641a6f4732bf3efb008bfd812f92297eb32473794b31bec87fa30a2ccea3ee0493ff30f79269bfe23718f53e6b2099ea0377609c7f34be2453fc7b914cf91c1f2f63c0e6478a0fb6e019d58be207c1538aff8fe039e503712b99e6eb5c3297a750c04b1afff22618fb1922c1347fc73bc9b47f4630f2f9eda360b2efab2e98fcd1ea158cfd83452598f47f6b48e6cf8feec1a8b7a40bc1f05f3bc9bcffb61918f596f85d32d5e3447fbaa48ff94030f6ffdc24737bf267c416f6a7ac3f2453fe580bc67e99122cceeb9c24533d6b2299f4ad108cfce30773fd500cc9341f7792a9fe6b0ba6f5da6b2399ce372ec1d85f1d9d25f3efd59b60f89f3bc9bc3fd4a364f22f6f60ec97543792797fa8a960d8c74d32f9932918f61ed49269ff832d99e44d24f3f61a23c1d43f96fc1ef1fe1c8cf763448e645a3f16cfc3fe3d632899e2955832cdafd01f0be7d5ad4a32ad9f3792b9fcc64030ced3d792b93e9723c9b41feb02c6fe67732b99f68b7c4aa6faa3180f9c17f6499ffa032dc46bf098ec5d8f24d3fe08133ca1f530ed049e527eb7f50593ffb83c48a6fd570a7846f7d36b30e6fff25b32d5ab73c1145f28ef82299ed1e660d473b64f92a9def92698fcdd5a3cdf46fd24914cfbcd74c9b43e21e445fda611f7437cb1fe124cf65edcc02edd3f7225d3fb001e05d3fc5ebd108b7879bb93ccfbc72f05937e66a9605abf538e92493f56e021d99f6249a6fa5b2b98fc9f72914cedc3785a789f52f12698e42943c964ef17c9e40fe792697e1849e6f2648e60ac470660bc9f243b4aa6fd3fa1647ebda20826f9d24c32ef0ff55e32d5d7447f60fe2f9f25933f5a4aa6f8e62c18f9502299f40ffa61e1fd4b4a2899f6279492495ed19e29e297028cf795048d64dedef05530e29137c9e47fe4efb19f740cc6fed152134ced0f55c9fcfb488c17dedf74b9934cf64dfa3c326754ffab0cc1643f510ac67a78ba04633e77466083ecb309c026cdffa921998f476582b19fa7ba0aa6f93e5e0ba6fca6188051bf4b447bb1bf4aff00237ff60f92e9fd41f792e9bc7d2599e6f717c1d8cf247e8f7a5d160ba6fecf23c1b4bf21a0f86264e13c72f82499f2fd57c1f06727c954bfcec098df755b30d9ef7a2e98ecdf78974cf54cb447d47b3d5330e2cb0fc9b4df47dc0ffbd12ea9647a9fec1e2cde07f92e99f60b1c05239e3e4ba6f9df974cf9d74932ed9ffff17b2e5f70014f90ef288261df8664b25f5332bd6f0ae36be1fc4ef92499f22d4b3297ff593c0fefb7525dc9e4df3c30de5fa53a9229feb12553bc2ec66f46f2565f92c97f37609ca7b4df25d37e825a32adff89fba39eaafb92293fea24f3ebb7627cb13ebbfd944cfbadbf2453fe37154cf287a664d257d15e715e80fa6fcce673f2af117846f94076075e503d2188c1d88f9a9b82c91f2457c954cf38832df2279ba9647adfe70a8cfaecf62098e2ef6e2699ce27ed04533cb2d5c0d8efaa3c09a6fa46f12199ec5d3c0feba51dcd9f63517f5dbd0886bd3f4be6d76f7f30d59b62c164afde5432d5271f2453bdf0118c7abd77124ced4f1ac914afae2553bd5edc0ff3b9f32498ec6d1308a6f66c55c9341fdd83313f9ba23da8ef46a564dabf664aa6fd21f27b8a37e291643abfe249a6f9ce174cfb13a2028cf78b25b9647a1fd4a364f20fdf92c97f0c25d37a512599d607a03f22bf375ac994ffa49229ff78944cf94a2618fe48fe1ef59e4632bd3f270163becf2ac994bf8beb71fe4b0d2453bd27964cf552d13fa807da2f9269ff612499e627d13ed40f424330b55f13d763bfc6ed4332c50f37c1f0f78a64daff3d964cfb43c578637daf7a138cfd39429f719e6745fa30314df21f590ec6fedd32134cfbb10c5d30f98bcb8b64da2f3c01dbd87fbc174cf5c92001e37c4d25eee760fff1b7605a0fc8b792e9fc81b8bf43f149740263ff68fe2a989eb722fb9c8878201849a6f75f9e25d3f37cc974fee15532bdaf752898ecdd0904d37a475080512faf7e30e9432e18e7f56e82914f5482c91e0bf13ce4ff7e2698c627fb924cebcfe2f7d8ff1b3e80719eaa934cfaee3992491e717ff80f6f2699f22ff13dcecfa753c9e4bf0e92293f394aa6fd139660b2cfc8904cf9df4230e68b4a32add78bf1c0feda740ec6fbebcab3648a8f2792c95fd492299e1848a67ccd164cf25b2d58f887ab64f2379d64de3fea4132bd6f4efc7e8e7827944cfb7f1e2553bd4f134cfa6c799269ffb6781eea8df14432b57f2718ebe591645a2f8b05231f15bfc77e0f652699e229f13cbc7faa9a4ba6f361427fb03f5013fa8cf5e2c495ccbfd73dc924af180fec0fd33e24737922f17c9c6f6cc91ea626f69b5e13f082fccfe64d32d547bfc0385f565ec0886fba1cecd07a663394ccfb237b05633d627b144cf6779949a6f75fd682c93f06349f4dc5fa433d154cfaace982697d721b4aa6f3c11918f585742299fce5bd64aa67958229be5ac560ac27ac12c178bfd79b64da0ff1e37b7adf95fc3dcef70592a95ebb174cfe3a10cf47fda01c08c67e1b5f32bdcfb0134cfde12a92493ed17f585fc81f25d378dc49a6f8e253308d57249e3f417c7a904cfbcd7e30c5d382b11e982592797f24df82b1de954ba67aa6907f4af69baec138af6c8d24533d692f99ea733bc1e4ff3c0b2cde37be944cfe712499f2b1b964b2675732c52bd0670bfb45d54832e58fba64da0fb301e3fd8d4a2499d67f857ee0fc72f82d99be5f81713e3e194aa6fd49e27e588fb89ec1884fae13c9d4ffa27fb0bff0229e67537fae481f66e612fb2d776083ec3debc026eaa53618f18a3b0323fe580f04d3f5c98b64da7f63825df217852e99ce77907c33113f6c4dc134df6f1f24d37c9982b17ee04f05537b9a77c9148f88dfa3deb07a92ccfb7f73168cf365778229be48bf25537d19f28bf501e55e309d4fc94f92c97fcec158cf2b12c1e41fbb4fc9b43e3d104cf3f7f6158cf87ebb170cffe448267942c1e47fba05187f1f455049a6f5614330f4ff0d8cf3b88ab83fde3770d94ba6fafc12bca0f6a557c1c80f6dc9644fb964aa7f1492a99eb1934cf3f718bc44fd632199f2ab67c914bfd782518f16e389f78346a23dd8bfa58c25d379ba4030c95b5f2453fc5c824deacfec2299f6eb6c25d37ae74630e2b94632ad170bf9b13fb87b964cf514713df61bd4aa643a9f0f7bb31cecbf10fa28f6e3f89269bd83e2adb9399f52bd33032fa6fcfef9086cd07e8d95f81eeb1b97a964b2bf0dd8a2f958ff02dbb41fbbbb825d9a3f2eb5608a3fe28560caafb6141fcd45fdb11a83b11e180f05d37e5c5f114cfe669d8051ef6f3dc1a40fab108cf3d9e55a30ce3b1a60d4d78bab649a5fe5f7645f978364dededbb360f247452899ea616730d6e7d6779269fdfb4330f9bbd4148cf8e7058cf5b8e44932bdffe25e30f6835c24d3f9d1b964b27f713decdd16ed9b937fd2f792a99ed2082679a247b0380f33964cf3ab18af05c52f57d1df381f5baf2453bcff0046fcacfe60daaf6a4aa6f9ed4b30ce7fce25d3fedd1918f65f8af1c37e6d4f954cf9cf5a32c927fa17fbede254326faf22aec77c1bd582a9fd971d58ecef3524d3fe5ea1bfd84f97d1f82ec47a83be124cf5c8ca07dba4efbab8de9df2dffba44f0b51afeb5cc1747d32154cf61eecc043ccf74f9269ffd3098cf7495c1e25d3f9c14a30ad9f281f92693de2001ee3bcf34430e94f71114cfe259883f17ef6b52599de2f36144cfaa23c4aa6fafd188cfa79d60a267de832c1345f1786649a3f7e30cd97a2bdc86ff55232c54fb9648a6fc4f367e44fbaa1649a5f669269ffb7f87e4ef6915f2453beaf4ba6f9443c1feb655a2c99e47b944cfb532493ff6bef25d3f86ec1e2bc532318ef1712fa82f3cdc55e32b5ff1b0c7b5acd25d3df9fa04ba67ac25e32bd0f44b4cfc0f95ad13f787f759c08c6fb8f34c9141f6e2453fee80b46fe22fac7c2fbafef24933f17fa8efdf9590dc6fb8d4a8a079626ceb3d513b04bfa5a527cb664f645eb65067848f359fd8369bfec063cc27ae45532d5e31f25f3f15c3d83315f5d12c9544f740553fe1e6592a93f3dc158bfb88127145ffb9560b2873a96cce5d75f25537ce90ba6fa62f283a95e2ae49bd2f82b0f82c93ef385645a6f17ed453d39984aa6fac04c32fdfd5607c1a42ff14a30cdb7b74232e5a76f60e483fe5132cdafb960c4fb5f60c4aba52218ebaf7b30d69fb6e27b9c1f0ceec1d82f962b92c95f1d24537da7148cf93d05239f534f92e9bc8bb81fcefb1547c9544fabc1383fe68af1c67e92f807d3fe43213ff6af7662fcb19fdaa37cc410f5ebfc5e30cd1f6b07ecd2f85a347e06332faa8f1cc0d0efdb17784cf6e91a82499ff44ff004eb318f92693fdebd649adf5f05937efa67c1347fe91618e7bb6e7782112faa60ac8736a1601a8fac00a31ee98c05e37d155bc1347ff8aa647a1fc009bca0f1f21682c99f9ae2fe0b6acf360763fd62bb168cfcb0148cf7790879f1be9ad4954cf53cd17fd8bfe49f24533db1164cfdbd7d07e33cd346fc1efb17b789643a4f300423bf303760bcdfec42f669b27885ee47f38169e1bc977e124cf18d3706e3fd11fa163c22fdda9482a7b43e7805c3ff058660ba9f2b9e87f364d14632d5fb4792e9ef37fe02e33cd926028bf364efe039c9b712f747fdd9ad24d3f58231fee58b601affdb9b648a6f7230dedfe12d25d3fa760a467d3817f218145fd99f9269bda1924cefdf93df23fe7e009b349f98623c2c1a5ffb2298ee97d8609c3f32e6609c3f8b2cc9646f0bc914cf3f4aa6786607c6fe958ee20f8bcdafb43f81e20b165e93fe5c3e25d37e30f13dea3ddd093cc27ede2d18f5983804e3fd1d9a25989ed7168269ff61fa089e223f9e8167d47f862699d6f39e25d3fe68152ce2b70318e7c9ec67c9f4fe12138cf70f252918f1932b9e67507caf08f9f1be9938069b648fc15e308dbf32108cf7df88e7637f627c150cff7a0163ff42f000c6f99c88ec9b4d37a867d1fc62b3f1a3fd3c743f5b8c5ff102463cb2da82117fb4df9269bde12498ec510f25d3fef01c8cfcb8b425d37eaa5232bd5f2506235ed85a9269bda4154ce31d89f6cef17ea8037841f76b447b17d84fb6012fa9fd6b211fea49978b608a4f0c156c423f3bc9b49f3602c31e6f7bc1d0bf4a32c50fe44f6c1bfb3be22918e7e93a6287d907adb70ec063eacfd51b784afdb3d1c0c85f8a5232cd97afe0398ddf652d99fcf75130e5879d09c67c961482c97eae7bb049f74b3ac9349e86649a4f2692b93cb978be8df749b88229be509660eca7f39f24d3f922713dd6afaedf8269bcd690c7c6f9d755001e52bc5b533ceb5a63d29fab2199ce63edc1139a9f82083c25f9f5068cf745dd2cf082c6238d25d3fb1d378229bf503ec178dfce6a0946fce9bd0aa6fe5ccf04e37d0af27aca77ac1bd8a2e747df9229fe2dc136f98ffc4530e9f34a934cf9f10fa6e78be739387f48fde9daa8f7273c3e310716f67b260f9269ffde1318efefb91e24537dcd06e3fd79f6156ca0deb1904cf6a080d1fe6a2199e67b5f303d4fbb801dd8fb0a8cf8f9a611db78ff5dac8211df745f60d413133e7e2c389be17ccc183c27ff97459279ffac4b30de27947e0826f94c4532bd7f5d032fa9fd6d2a784af58e21d8a0f9e1aa48a6f53f5b30d58ffd6730de5f94ad89ed01d9ef86eb2b0b2eb0feac6fc04b92af7525d3fbcd8f6093fccde64532d9cb4d30c57fe1128cfd33eb77c1a41feb028cf7355a1f82e9f9ee1cec62ffea9b60f227892918e785f0bd8dfdafe9b3601a4f270463fda81980f17ea59adbbf3966fd41ef472dc14bf2075b1b6c60fdec4132d50f0bc9944f1cc126c693dad7bf5e9ff2075c6f63bd6b45fd33b1e6549fb8adc0580fdc7682c97fdd5ab035a5f74309c67961e50bec523c1de2f736eaf7f11c3ca4feaba8bfa6d664467fffdc080c7f53b492a97e6f08a6f686776013fab4964cf69982717ed224ff30b5b15fe81608c6fbd3ce60c48b2d8dd78cdd8ff2eb5430c5839b5730f2dff60086be74a4af33d6ff148fdd8391ff6a74bf390b30693de808b6917f64c436ce8fdf1230f6bfb7345e0b6b3a27fbe9c0f319bdaf8bfcc782a5f7e43f0f60cc4705f99f256b3fedf71c826d92ef3625b627349f68dcdf9b2c9f9b927f237d3458ffd1fc5b8327f007241f530f1aaf6b00467cad51ffb2f8674efd41fed5b6711ed0e4fac192cf39b57733022fe97ecf977feda32abf7d8c9f3e26ffa7827fa74fcf0afb9da5daaac3fe58ff6a0be8f3df21cb2f72b9ecf3bb5c0afe9b90afff77f7df5116d62247f5d81ffad87ddba87590cbfd87bfb3f1f9779605f20899fa6be8cfffb79fff167b71e9f393743ffadc1663f4e33aa96fbdedf8eccf3f18b9ffff65e16dfbc90e6009240d1fa9bf2b3bc9439ee0df4d1661eb3f64f9313a3f24f3e4e717cbfa7791e5379fecfefa91d758f05a8e94457a8a7f2b590235542335561335553335570b364ea55aa917b5669f86e951ab76ec7365b2de544dd5d99f15ff9dc67eb1fe379365a3aed827652391a85bf6b963d2ecd43dfbec982c07464726dd91fdfb4e3da9f74cce7bf5817d0c76e53ff4daff5b6479e43dfdc446e699fddb597d515fb94ebda9efea87faa906ec9a9449f8c524f85607ea501da96375a24ed5993a67d2fc1bc9c25a7a5637ec9f91ba607f02d8fd92c9f2cafe6929aafaa4284cc7be15431d2ba662b18fad380af31a8aa7f8ff3d92fcf7cc954aa0844aa4c44aa2a44aa6e44ccf5ca63d2dfbf4b6622a059b45064aa954ca45a9954669954eb92a3745537465a5acffe8b5ff37cab251b6ca9db253cf8aa2ec95036bf1513929f7ca83f2a83c29cfca5979515e9537e55df9503e952ff6dfbf9581325446ca589928d37f23596c65a6cc9505d3b393b26413cd83f261288661b044c0b00dc7700dcff08dc0088dc8888dc4488dccc88dc2288dcab8a87746fddf23c99f9345b58ca6ff23a390df6677a3353ae36adc0ccdd08d95b13636c6d6b83376c69efd391847e364dcb3cf897d8e8c1fd8e7d178329e8db3f162bc1a6fc6bbf1c1b4b0cf02685e757f9b797f9aadfe999ff8af6561527c1a5feccfb7313086c6c818315fd4186363624c8d194b9916c6b2370ad3304dd3326de3683aa68b8fc73ebe19b04f684666c465eaa53a9a31936a6726666a66666e16666956e6c5accdc66ccdcebc9a375333757365aecdcd2f33b1f2eb1cfcd764311a736bde3169becd9db9e7b21ccc8379344fe6bdf9603e9a4fe6b379365fcc57f3cd7c373fcc4ff38b7dbecd8139c467648ed967c23e63736aceccb9b960992a3334e3de322cd3b22cdb722cd7f22cdf0aacd08aacd84aacd4caacdc2aac12b9dc2f91c5ffaa2c56655dac4b3f2e566d0cad5a3d5b8dd55a9d75b56e9666e9d6ca5a5b1bd6d3f7ccd96ead3bd6522689b5b3f61677bfd6019f2393666a9dac7beb817d1ead27ebd93ab351da592fd6abf566bd5b1fd6274b98bf5884b0601e3d61b3e9c0faeea3cf1fd1d1bfa2634cb31a8bfe82f001fff74a89aca135b2c6d6c49a5a336b6e2d7acdb196cc74fa4a9ed18f85b5b34d48f2439643bf4c614e6ddb766cd77ab03ddbb7033bb42326cfc178b4633bb1533bb37336abda766197ea935dd997de92fecce74fc932307756cdc6646055aa67d77663b776675fed9badd9ba71303fec95bdb6376c249ef9676fed9924625414662bcc5e602bf766681bf6d6beb377f6de3eb0cfde3eda27fb9e8debde7eb01fed27fbd93eb319d7b35fec57656fbfb1d1b07efffcafc9f27cb16a66274cb78cc6f8b4df992c1ff6a7fd657fdb037bc8faf3c47a7864bbe6dc1edb137b6a2db924bb7e64fab161ff9cb1f6ce85fd9b91bdb0972c485698ddcc1dc3311d662c8eed384cd2bde33a9ee33b8113b218f5dd89545df17fcdecfe155954d7183ab113333bb1edda499cd4c9ec2f27778a5e0ea7640ff0ed3d6b55653d3b17361acf4cc706cc6216dc6ed8ff3b356b6be3b44ca6b9d3998173756e8e66f7938feeac9cb5b3b1b7ecf78eb365d21c8d9d73e7ec9cbd73708ecec9b9771e7ec9107ecb7a7eb6a03f234b2f09f3c683fe7ecea3f3e43c3b67e7c58cadb33db1ced6b33d6656cc3ece2b6b5dc5dab5c0a7f765ec63cfe9e374f8bc39efbd24f6d20e9d0f66fd47e7d3f9ea7fe954ce379366dffff5f6cec8e9ff5acca933b3eb9fe4f8576599ab9db3b05f9c25fba1e21a6ce2b08c23f34accd3bab6ebb8aebd702a73e17ab66b1f5d9ff9a8931b981fccdacfaca5f76ec86c2ae673e6d18ddcd84d98bde0e3746e6a7acc73b02b594fbcd93336be67377373b7704bb7722f6e6d176e63356e6b358ae67656f3afe8987a70afaaeddeecd6d55cdd5db96b3626cfeec6dd9a43f7ceddb97b3622dbde86dd837bb4576e6031ed331df7e4debb0feea3fbe43e1b817b765fdc472195fbeabeb9efec5707f7c3f9703fdd2ff7db1db84377c474f1c0fe7dec4edca93b73e7eec25daabd2f6091b8a7aa81f70fbdda9f91c533d8f46d79b6e778ae937b9e71b2179eef055ec8e4601fdbf0222ff612e6030eb6d1eb8c977a99977b85577a9577f16aaff15aaff3aedecdd33cdd5b796b36e7c7c6c9db785befce7a70471ebb0b1b5d9dfd3ff36fde8e59cec1db7b07efe89dbc7bb5f01e58467af31ebcc71f5af5bb1ff853b23c79cfded97bf15ebd37a730637362dbde3bd32f2e099368cbe6f229b39ae7de76bd0fefd3fbf2bebd8137f446ded89b78536fe6cdbd85b76441d7a3aff8866ffa966ffb8e71f45ddfb31e7c9ff9e8ad6df8811ff663e547ee8069e4831ffb899ffa198bd6be51bffd523c9189fe75599e2f7eee177ee957fec5af0d6603e6d46f7a49fc967d3aff6acead27ffd6cf77bee6ebfeca5ffb1b7febdff93b7fef1ffca37f62f966a2bef8f78aea3ff88ffe93ffec9ffd17ffd57ff3df8da3bdf03ffc4fff8bf9f485bd30c74ee57ffb037fe88f8cbd3ff627fed49ff9737fa1382c27fd6679f70f597ea97dfc99d8d25f066aa004060b112da65f6aff97c0f7fae5b7811d38fe3570cd0fe31478811f04411844411c24411a64411e14411954c14509839a7d1afb3d68838ee59af3e06a3f07b7400bf460c5fc48ef0d9560ddeb99ad30d906f6c27a0e36ecaedbe02ed8057ba50e0e4a191c8353708f0af54f35ab3f2d8b1d3c048fc153f01c9ccdd829ad73f012bcf6da15bc05ef81137c049fccf38c83afe03b1804c360148c8309fb330d66c19c49b47016c1325443253442d3188416fbc39c71e8865ee88741188651c86cc73a8709f3cb4698f29881c50f61d6fbfc300f8bb00cabf012d661e32fd421d3b41fb2387f94e5e77af6cf63d25f1db661175ec39b19875aa8b3bbafac636f27e13a5c33795e8c7b2f0d37e136bc0b77e13e3c84c7f014de870fe163f8143e8767f52d7c095fc337ab08dfc38ff033fc62d2982c22f6d97ff90e07e1301c8563e3184ed82cb40dd6e1943d63e6ee99fd7c9b53f6dfe7e1225c466aa428456444e68fcacdaf5a46b288ff862c28f1d4c8525fd5d7c88e1c7f19b9e673e41987c8376751c02375a61351c8e2f7cf88e524511c25511a65c62dca8347ab65f369cafe3c4645f01895aa1255d125aaa3266a5910d345d7e8166966678ccc75d4467ab48ad6d126da4677c629da452c82f0039ef778d68ecdb40bf6bc7d74888ed129ba77d2e8217aecefcdabed866af4d1eeaff6f2932c068fb043b77516ca2e7a8a9ea373f4629ea357f6a437e6750d16a79ca37773c2e6e8aad7eae823fa8cbea2ef68a0ce153f1a2aea8f2a2c7f9e1b8da27134096d2b8ca6d1cc8aa379b48896b11a2b56111b319bac629b85166eccbc3d9f73962c7f93b29843e33ef6e3200ea3fb388ae3f081f554cadbcafc5a1f25fe2c0b7ff68f7131d4f8f9e22cd4f73889d3388bf3b888cbb86277bcb0f87111d7d6dedd5b4f7c2639b959dcc46ddcc557ff515dfdb4f662cb3bbaca5875e25bacc5ba3f8b57f13adec4dbf82edec57ba5890fea323ec6a7f83e7e881fe327e3143fb3d866c9bc7380b86e689de373fc120ce2d76011bfc5effd88736b3055a38fdeff992c0ad34726cb6b9cb8adba8a3f4c23fe649db7641ec6b09ee3da665ed3fc0c33f6dcaff83b1ec4c378a456eaca7e51ee94713c862c3c1eecff9dfdb7493c55f57816cfe345bc4c54e3c17e4894c448ccc44aecc449dcc44bfc24484263efde9b3e8bd8d887e7a42c3b65f3d6d17c4da2244e92244db2a84872b1baf07765b1c886f8155b36bbb2fe65914fa2b8499194e69b71f26fd69e8dc9d9b998dff6c13ad953e39054c925a99326d6d5f7beea9db4ccca52f40d55c1d97d95bb385332bb4abae49adc12cd38252ceb4956c93ad924dbe42eba26bb641f1c9243724cd82c657a8ec272014364d94c9b4b2f4dee9387e4d158264f09b34ab146d2e722ff4c96e499f5e198e50e2bf6efe7e4257935dfad3e3f3f276f56ff8afa7df26ece8dfb709c7c249fc957f29d0c143d192a8b64c4abe3bdc7b4fbac8dc9c264b2df93713231de9269324be6c63159d8c76469c6a99a2aa9919aa995daa9e3dfa76eeaa5bef1603a2cbfe1b2f45910cb54b769601cd3308dd2384dd294cbc2d76dfa7cc4180aaff6932c96b0fe3453466e6b97cc8e9d344f8bb4343fd22a4c98f75a5afdfe8687f4621becee75daa46ddaa5d7d451f4a04b6fa996ea91c9fd3f978549c3644957e93adda4dbf42eddb15fedd3837d4c8fe9c9d8a7f7e943fa18fae953642b7a344c9fd373fa92bed2c8902c2ca7db4681719fbea5efe947fa997ef5feb197a56f7f9f5bfd2acb8f91e17a78607dbb5412ff2139a7dfce9069eb673ae86da5f7c54ee5fa696f8f553a4ac7e9249da6b3a4b50b65c3f42c5177fe23ef31361a7d0edad724d379ba4897999a29c63163f971b4efb3e3ccecb3e2649559999d39ea57ea0475e6665ee66781e9fa81a3a06ab0eb675096e1c5599845599c25ce23b3172e8b6af5b9d52fb2889a9add3f99d14efd4a064ccf952c553eb2cc74cc2fe61b077dcecbf477613d982316e37efaeb2ccf8aaccc2a61e7e45b98b34db24b56678d5dc763f53b6bb32ebb662c62f343d6df6ff6c2fd66de9c652c99661ce3a74ccf56d93adb306bd3b36d76e74efa5999c53363a603cf76bfcd8445369691edb23d93e5901db313d31d85db7491ddff268bf28b2ca67a973d3032b24743c99eb82ccc37f67d642ebcc4661146f69c9db397ec357bcbde852c1855577d4bdaec23fb8c9e93419a655fd97736c8d8e866a36cec8eb24936355da7cc66d9bcf7ebacbf17d93257734509552b377233b7723b77d8377d3d6dc29edad74398b7cedddccbfdec900779a828ff4496be024a7dabf8bd36f63edacc23c330ee982cbd97efed70c024619219f7799c27fe364ff32c3c30597eac4172bf95e779919779a556f925aff3266f8d63dee5d75eb7dc613f1ef9cdfdeeb3e25cb316f153aee7ab7cad9eed32dfe4dbfcced67396c1b09879c8729a4bafd9feb7719f29f93e3fe4c73cc88e4c9b1392c52afe812cbd0f559209d332db2ed5263f1926f32baed05ca6678eed5877ecbfbce6f7fe5dfe104cf347a3fd690d92d97afe943f671725cecff94bfe9abfe5ef7dd4937ff49909af719cddaf6cca73628dcd8871fe997fe5dff9404d9cc833f3613ecac7f1579ff1997dbc4c51b4cfee30c9a7f92cc9988e1d59a699f47e377c0bdffe200bb75792259fab7b854d65ea77be302c63cfd2fb1dd5bc481673943bf9b2500b8545f5b3e8814547b6dcabc0575793b1fa919f0ba33059b7d9ac557d2cbfe8f312ebaeb7e4c2e96b1785cb62ad53e1157e111461112923d52ee22229d22233f67d5ec365611ac6aecdd98cb92f8aa22caa3c2459faf6b398f5f597f9e5375958c6b34f6fcc62be8b0b7be4ce74a97227646177ae8ba6688b2e288a6b714bf25f7684303d53fc645268855eac8ab5710835e7b597a5d8b06cabaf6a7ef4d5be60cd243916dbe2aed815fbe2a0d8c5317b284ec57df1503c16cc3efa1a279764614e0b268f7128cec54bf15abcfd248b1aaa7f57164fcab22bde59fe742a3ed894b5efa33c5420875c9645f1597c15dfc5a01806398ba2c90bffd8555114a3625c4c8a692f4931ebd72c989ea8c5bc8f467b5b6677e03163b12cd5ecbb544287c540d7d250c2d22cadd22e9dd2354ebc22c2ae36c7f6a1f498cdc6a55f06e1ae64290dd731f7efc822d654c40cf3adb665c472b053191b2ecbef852cfb5e16f3cb3a9749999659996749745f163f564a7824669465599597b22e9b5e92b2cd34661b565f3b6371dc985bb4e10ffaaca7ecca6b79b3be4acd0a4a9d8d67c4a45995eb72536e992cbabdeda326368e5bebbecf64cabb7257ee7b591425cd7a6d28b552fb45961fd13ef773ea8dcd103b75c56439183e1bebc81c5b7d3d2cb0674e63cfcb63792aefcb87f2b17c6271ce86e527a398c594ca9d5d97cfe5b97c295fcbb7f29d79d12eef32adafee9bb3bebec13f337b5f7eb079bc2c3fcbaff2bb1c985d392c47e5b89c94d3c42d67e5bc5c944be3c45c7d156a7c4c0f665f1939564a655466d06746a7e0d4ef2ab2aadf62fedefb3059d8b7663f36c8d834bbaa2c26cbbd19b2deec97483a264b6b06c6a1b22bc79bc5e3a00996e5c4dc562e538ba86236cfa29545e5574115329fca66bb3ea736471513d73a313946fd9a4515dbdb2aa9d22aabf2aaa84a2bacaaea52d55553b5556745c1b1ba062b362e5ba7a355b57ebda3aff254b74aabf42467b21c83a36ad9f51f641151a5cf6571d488e9e246bd315559556b264bc4662c268b193269f64c96a37bf65a6fae2e2387e9eb5bb5a9b6d55db5abf6cab53a54c7ea54f575e17be6c717d681c5d5233e26a3fe2ebd3d570f4c96c7eaa97af646d5b97ab1aaead5dc556fd57bf5517d565ff128afabef5e966ac07ac2e5f5cf678bddb11a56a36a9ce4ce23c6c5339adf627e4bca6270efba60d1ee539ac5a36a524db98e912c51af654c965335f33a8f656bca3c34ccae9a87af9eaac6ac3f17d5f2a26637f7f5a25cb81fb615f38349d17f26b406c3ee7570377d7e75312fd6c5be38e1cbc5bd78179f8d897f092e6134b8449798c9d2b91fccbadefb159cde673059946a7449823e47f6d9c7fea32ca859283c96225912f549bdbfa4ec9e593fc6fdfa9c6df523d4af3d18a774e75d2fb9925e8ad0c8eefbbcfd525eaacbe5525f9a4b6b9c2edde56a6fcdd1e5165f98bd93244764f10773e445d68e5da55df4cbeab2b6c2cbe6b2bddc5d7655a7b697fde57039ba2fbd2c173633b1d8cde27fd5d684fde2fef27079e4b2a0adfd5add3f95256071f24d29c2faf27479eeb585d61bfb95a07ecd81e9d8a377f35545b3df7975c88ca6feec72bebc5c5ecdc4383afae58daf136d8235f75dbd7e8db92c7c3d96f5f196c5dd5333bebc5f3e2e9f97afcb777cbcf06a13d388e16578195dc66c869ddb6c66cd466c967db5ee7adbbf4c2ed3cb8ccba2f0bcc2fe5d16392f4096545373b5cdcf97f9657159f6eb90bdcdb2d8b85fd50accc08d8c83a7298f8a1fb4c620fca8d55a49b6b5519bc98ac9f9565bb56def1cc38bfaf99ecd8d336ef74cc7b8341e9b3146e6dcdef82cdeac9ddaadbddaaf83484b46e9ad0eeba88eeb84e5ca9fcce3796c6e9db008f4c9dd32590e755a67756e325990875bfd0aeaeff9cbcfb2287eaa2b6e5dd4a5f25557c68149c0bc0fb3dfa8978569716cc69eee2b6aa9cc422bfc8caa9a4590ec7f0d6b5beb7eb84347cdaf2c63af9cd73063f67faa22f6ebdeaff7d27875c746f9cbfc626d5cd6d7fa566bb55eafea35d36ca77c8af27a536fcdd8b9b23cdceb6318d6239bdec2eabb7a57efcb3d932515759e3fe695d8112074cc55efd44370523ae5b13e184cb3597e7f6fdbbc12cfda581f599b4ff57dfde0b6a1556d13b77eac9fea67e3549feb17a65b8bfab59f159cd728b02d1691ceeb37bfb1b7fe376fd994b220ca89acbdfb5abfd71ff56738a8bfeaef7a500fcba01e992ed3c27db17077aec3f29881cb324b63578feb493de5b2507ef20f7264f6a797a59ffb13f6ff0d9bfda7f5ac9ed70b9657b2fc8bc52e5b7b592f9d779bcdc98dda288de13f5a35f3ca1f8dd958c64363db47f6d9374e3f438693be6ed3fbb2c665ff34a2d0def09a9af1cb1ae0d074eb5be3357e1334a1f3d4444ddc244dcafae291e54977eeaec9ac2dfb158b429bbc299ab2a9b8bdd09ca8f42b763fcb42732397c5e4b364aa8cd2cc99c77a7369eaa6316377c3eefb7039352d0b8359d6e186c6aee99a6b738badd0b48a466b74fbc18c9b557aecc7c57c6fd64cdfc76c2c3efa5cbdd9345bebdcdcb9dbbe8283d53fac9c9b5ebfb3a4d935fbe6604d9a63736aee9b0726c363f3d43c3799bbeb6be64c2fe3e6dcbc34afcd9b948559c51f65a1d95ecaa2f1959bb5faa138cd7bf3c1a22ac7ff609e89d973bfa6686f9b4fe3e0dbcd57f31dbae167ad3483669828d60b7bde283359ae356bc66c961b46611f41369366dacc9ab971b296eeb6e1e3815566167d9b9ed3354b63efad5bb5555aa3355bcbe8ebd581396efb15c45d9f2b87ba71689dd66dbdd6ef63181e7719aadfaf09ff365752a5cfa4bdc2fdfa937a8bc76de03dc65d1b1afd4afdb658703fbbed6dba8d8c531bb7499b865ef5de666d9e9fdaa22ddbcad8370fed85595585fce4beaddba66ddbaebd5e5876dfded8bcf3ddd70ee4eabfefed5aaddf1de36baddeaeda755bb35f6dda6df0dede056f5ec89eb7734a63d7eedb437b6c4f52163f38fd41161bd97abff39945bc2c951e313ddbe5b9a2b7f7ed43fbc8b4f7686ffa9d05b5d53ef55adf326fdf9edb97f6d518861f4e5c44ed5bb269df59ccb3cf3b7bc9645ef5f949fbd17eb65fed773b6887eda865b3068b697aed123b19f67e906bf6b69db0acf8d44edb593b6751cb397875ed76d12e3bb59fdbeace38754a67746667c571922779af472c8e39fe4116e75759d84c99a94967770e93e6dab99d67192cd770d89cb063be56ef7c7b5b9f7d3753baa00bbba8da767197746997b1b0b8e8ca7e6dc8db75157bfea5abbbc6df756dd775d7eed6699ddeadfaac8e723b5ec95b326b687b8fe2fb4e65dce75db7ee36eeaedb76776c02d875fbe6397aef0eddb13b75f7dd43f7f8ab2cbfc563b40fdae2fbb87b59fabdb76ef7d43de7cfddb97be95e6bc738b9ae7de8ff1a4166c38eb3eddeba77964f9cba8feeb3fbeabe9d85fad80dba6137eac6d19d195b0b33f6b56ed24dbb5937ef16ddf2aa5e95ab71358d9dfbca7763f9bd1ce6d00ffa99fd6ad97bc7bada4cbe73b7bb322bb18ee1cadd5d5deffdea3109dfaffe35b886d7280fa302b66ffe1d1d13eb0b72bf196a7fdcef5de36b52b2d65d53ebe19ab119ef6c9dddcf7eb5f79ab3ff5a5ccb6bc5e29897ebe55a5bfeb5b9b6d7ee7acd27d7db55bb321d5533b30bdf8da69c5c57d7f57573dde6937efe655aa8f4750ce623a2be06c6f7638dd87c74ecfd38d515ade7de5aaa8171bcde5d77d7bdda3847b5edab2c5993353c07367f9c07f8afd7f89ca7ebe17a8cd953afa7eb3d3dddbf998b6641d1eef5e1fa787dba3e5fcfd797eb6bad3069deaeefd78febe7f5ebfa5d75d74139bc0eafa3eb987d26d7e975769d7b6bd60b8bcccccceb92dba2f5f327f2dd7d73c7fc1c27ebcc52c3a79b7263f955348c4c36f3b9aa6dbf33591cbebef31764b99937eb66df1cd6379ecb66877edf8bad140b2fb9b139d0b8f7b51b0b346f8152ddc25b748bd5db2db9a5b7ec96df8a68d025e15755df4a7377ab6e97f0e3c626c65b5bac6e9db1ef772df0fd16d6af1f5eafb0d86cc4246aee7236b3dcaeb7db4d4bc6d133cb2d44fefb87ddf3ffb52ce6e34dbfad6eeb86c5860d1b0d663515f3f8ecff6d8fc5eecc9fe593dbe6b6bdddd5a5fa62d7cae2b65386b7fdeda0d4ea58dd869f55773bde4eb7fbcbddede1f6787bba3ddfce51623f180fb71733643e7af24759983454afa4fbbfdede54f7f67efb48068a226ac97f7d7d3f2a6e9fb7afdbf76dc02b565f2cb35c58776c86d89a73162f6d6e43e3741bddc6b7c96d9abab759eadce6f1241ef77bf56f8bc80a5fa2eab6d4d4a8d394a85202f5ac199aa9599aadb1b16e5acdedade4e78fbbef3396c82759cc58f3345f0bb4508bf242d1d20ce3f287d3597fc25e1eb5584bb454cbfad981dd7b617e7a119385f624cdedad96f733a75668a5566917ad564325615ed0b65fe289b25322add15aadd3aedacdf84c1dd573979aa6e9da4a5b6b1b7ba16da99af0ebc8b03f2a8bb1ad7667dada9db653bba0b9bddbef2c7f37642dcfa1f8f22fc8926a7beda01db59376af3db008efce9cfa1f2c3bda71eb6451633568f92e43ed517bd29eb5b3f6a2bd46b935d2de8c85f61e4fb40f36269f2c216e94246ccb2767e999da97f6ad0d3436a6edeeefd98bf5dcee2c35f2b59136d6260a8bd955d72eed525db37111f562ef2fcbf2a84db59936d716da52578d7da8318f79673d9993b86e6fecb363518056b6bac26c79a71bbad92a9dab5bc64db77527327457c97596ee844e7fe622ce597e32d4033dd4233dd6133dedc7e0d74f98f5b2447e2f95bbd7333dcfebb2d20bf6fbfe0c84266b797c86ff2b3a16157aa957fa45aff5466ff5aedf11c3f2de39af8f322fa45ffb798faffbfaa6ebbe66817ed3355dd757fa5adfe85bfdcef850bff59dbe77c6d5413fe847fda4dfeb0ffaa3fe14bd07aece722db28dde4ef86e0bf3e78fe9e8e764adbfe8af4aa36ead86cdca34abf4f6eff075c43fbd8724c9f537fdbdb8ea1ffaa7fea57febcc07588affed6ed3ca56a3f7beea637afd3a561f4733895c33d687fa888dd0589fe8537da6cff585be5ca92b6565accc95e5eddd3c7ded778d38d5ca5e39b6e1eec90f0b0ff68b2cae7170dc95bbf2567e3c535f56415f310a4e2cdeea57df6a5a7bfb73b2048fab701505b355bc4a56e92a5be5ed78555807166b6efa5ccb3afe248bc9b28265dee5ceed8565b4b755b9aa5697555dcd568d3e5ab5b1c7f7c23129dcddaaeb76abab395e752c5bbbe3f66e626ef955166f7533e3b261f9d270a5b1f178e335567efeafaf2afd9571311f57fa6ab55a6bb362b8daacb6abbbcbc76ad75767d2a05f79b0b67d0ecf64796372ec983c0adfc570cff7819ef85efea3d8cf6bdcbbdf76e87ff8cd6abf3aac8ead1d7cb84edffa7e9e679aa6b63b6627bfcae2af4eab7b9643ad570fcdfbea919fce727f3a052c4f69fca971795a3dafceab176db67ad5ebd5dbea7df5b1fa8cbff26ef595f615a31fbbddf98749f7c177bc0f9d57f6795b7daf06d17e35147b2cfbbdbccd9339ee7739b58bd5a8d72e173b9358e3acdf65b1ceab717d67ec5693d574355bcd51c3b7708ec1fdf3314c92af16abe55a5d2b6b439badcdb5b5b6d7ceda5d7bc69e45cffb1f7bdefb489eaffb32097a7b62b3105fc7e3fba9f9beea7e36627e6318266b7f1dacc3c0091cbecb91452c6431bd17f85d967e7473dbd8d7efeb681dab77e20c2d9745f9b16be9cff8b1f03198af933c5d5bc1789daeb375be2ed6e5ba5a5fd6b5b5b437741601fbf7fbd5b30fbe57a25f6bb15a16fc34ceba757416dfb3e83e9ce9d77ecd807df6ebceefd6cc62bc50c8d2eeb411f366bfd90bd7d26374b7beadb53573e4b2fee5fed5793f628aba5eaf37ebedfa6ebd5befd787f5717d5adfaf1fd68feba790c5fdd69eef5ac1b8b04fbf9ef76a7e704b3e584bbedb9f5950bffba8f7e2eb7e97fcb1df83b63eaf5f02d736cc28effa73246c8e1feb193f73d2e7373edfafe4b23c69bb7e5dbf35cafa7dfdc1e617c8f2f7f78ffdf38ff3283f69566595d196e7f5e7fa6bfdbd1eac87eb11d335bea38c568b980e4db0afbf8fa6c6acc7cffc04c6b2dfadd7cbe90f7a7bea77569a43967505d5e0a69a713e6171d79d36d1f3f5b8f776eb49bfa3b61f93cb389f38de7aba9eade7eabdd8d32b674be7afc8f2d3d9621ecf798f6a11dcaf179774bdcc5f36ea46d9181bb37faead164ebf368979c230a77db5439cb4602336661ab91436d3dc39174ba1fd0a2caa7f6511e4ae0f0b36569fdfacc6cce59f8ce3c6c9271b77e36dfc4d607da94f56f35b9bfed2b8fc7eb6381a2a9ee2da55972acd26dc449b78936cd24db6c9f9aa0bcb6eac27ffdbf68bbc782effdf76ae6549552488eee733a6f615fdba7dbb6356a899203e5a6db51f3b4444f0c14b1489987f9faa8202a4bd37b457331113b9d010943a661645669d93b6d9e37b5a6207f5ce54d90a7b630ee6244ed8f3c2d4532060d9afca32ad349d280e4d481246103617866ae8b10a11c3b2b36c86248e1fe983506f36cb7bd7f59cde1344592e9dd23decc91c0e90c0115250a0014d680104cf80a691efb672cf7c667bc1191af13a6a6c8d2ed758790ea8a041fba8a546ca6681e23a2c67047dffd9b4a1130fb9e20cbad0833e2ce34747a706bc2c0e85fef98baee722bfd4f4404187dc51957668dcd0c2d0b660004318c12b8c61025378f3347fb13bb0acbe5df0f8ab3a31cdd0e01d3ee0136ee036e9c2ddb1ed7437f7e95459c13d7169c0bcfd003fe0117eb2bb700a4ff08c94def1b9eef5e9337dca1557dfc052a8ea8aefae6ed98c216b9d45ef4ffa485524aebeeaa181333471eeaa5edbb7f71bff47100423b4421517519a70a1686ff7106f632dbe471b97ebe0a027b3a4874ec8a276354cdffc603e255ca59dee228325a4b8c2354b719e8d29bbca113774bcb961e319c8f15c1f6327bd3884873ca043ee1bdcda7dce35430f7d0c30740718e10e636fed2f7ddd7f0cc2861b3aa1161991827b3cecfa8d66ec6112bce2115354f693204dfadb96d559cd6ccab25f967cd21655d61b3627a2d61336b0892d72a03dc20e53978ef868d8fa229f5faee75a7fe935c07eb745b764495b08ec7d0311d5f514356ca3bffd70224ff774bfb3f1822818bb5ad8461d3bd8c5de6e837df6fe0507fb088787258ef015c7d68bd0fa1a7cc79ef3f0a8623d21573237714a0f6bb636061dba66de58d0211dac1b76bfe293ef6039b59ad281736c393795d713791dceebf80ee712f96e3009ddd07544a5d179e13613e6e4967d435ca3ec245389a0cad56bfd58aad7bf7aee9fc122ff178e852391e3f3ba9c7d9399eff23a234758aeb7d96b869def6fe7fb0f468e60216ac18678a2378b9890bd31a42ee18c42f1d27b720dcf09969c1fb0909d7904e76ec356026184f0baafc89d66956e3da5fecbf6f6f369d67545d6b5c5d924df135a7ec542cb5e26e49a7cbfc201afa191da8093df3604f79408ae9ab0ad576031ca9ca3caca1635c83935653d22cfb448ce3bcf6adc752c32e62a9eb9443352aa19aaaae7e288acea1ab4729f2cb50e052bf5d4871cf952b02732ae47d9db635ea9689b453c57bc2062244752ad5f5e84c592fcc3e1ee4c949995795bc152fdbea830d827ffc84c20e9088f91d2fb395e4b665b520152c3422492ebf27dce3a1163b10a2cc60916c11710bad85b6ed69a7320cdc09db863ceee0a1533e20c1ccef6c814cd995eb334f9fc9ecf4b7ebda988b5c23b67b1108e04dff03d63da7fc32f8b9a5f4caeec2fc7c9c7e6f5bc5e154b795ce2e596e3679fca7dd222b624e3bc58134fe3a1e0bbcd199677fcb81c4b3d6a7ea7d6aeb0fb7e71ceb9a3f5738b7cbeda2ba7de3ba79caf57e52fff15fb1fcbbfd3fefcfbaf3ffe0193cc32fd + + + + + installButton + clicked() + DesktopEffectsDialog + installButtonClicked() + + + radioButton4 + clicked() + DesktopEffectsDialog + noEffects() + + + radioButton4_2 + clicked() + DesktopEffectsDialog + standardEffects() + + + radioButton4_3 + clicked() + DesktopEffectsDialog + extraEffects() + + + radioButton4_3_2 + clicked() + DesktopEffectsDialog + customEffects() + + + applyButton + clicked() + DesktopEffectsDialog + apply() + + + cancelButton + clicked() + DesktopEffectsDialog + cancel() + + + + DesktopEffectsDialog.ui.h + + + closeButtonClicked() + installButtonClicked() + noEffects() + standardEffects() + extraEffects() + customEffects() + apply() + cancel() + + + 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 @@ + + Dialog + + + + 0 + 0 + 744 + 512 + + + + Compiz Desktop Effects + + + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 40 + 20 + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + In order for Compiz Desktop Effects to work, the Compiz engine must be installed on your system. + + + true + + + + + + + Install + + + + + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + 0 + 0 + + + + Desktop Effects are a great way to enjoy a modern desktop experience without transitioning to KDE4 + + + true + + + + + + + + + Effects Level + + + + + + + + + + No Effects + + + + + + + All effects are disabled and KDE Window manager is used. This is the default behaviour. + + + true + + + + + + + + + + 0 + 0 + + + + + + + /usr/share/apps/desktop-effects-kde/noeffects.png + + + + + + + + + + + + + Standard Effects + + + + + + + Some simple effects. + + + + + + + + + + 0 + 0 + + + + + + + /usr/share/apps/desktop-effects-kde/standardeffects.png + + + + + + + + + + + + + Extra Effects + + + + + + + Over-the-top effects. + + + + + + + + + + 0 + 0 + + + + + + + /usr/share/apps/desktop-effects-kde/extraeffects.png + + + + + + + + + + + + + Custom Effects + + + + + + + Use custom settings from another settings manager. Switching from this option to another will back up any custom settings + + + true + + + + + + + + + + 0 + 0 + + + + + + + /usr/share/apps/desktop-effects-kde/extraeffects.png + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Apply + + + + + + + Done + + + + + + + + + + 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 = Tab +as_prev_key = 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 = Tab +as_prev_key = Tab + diff --git a/data/extraeffects.png b/data/extraeffects.png new file mode 100644 index 0000000..2d24c86 Binary files /dev/null and b/data/extraeffects.png differ diff --git a/data/noeffects.png b/data/noeffects.png new file mode 100644 index 0000000..7b06507 Binary files /dev/null and b/data/noeffects.png differ diff --git a/data/standardeffects.png b/data/standardeffects.png new file mode 100644 index 0000000..efc7982 Binary files /dev/null and b/data/standardeffects.png 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 " +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 . +# +# Copyright 2007-2008 Martin Böhm +# Copyright 2007-2008 Michael Anderson + +"""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 " +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 , 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 \n" +"Language-Team: LANGUAGE \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 } +)