From 957f4957311cb034092e27775904af924e29a0f0 Mon Sep 17 00:00:00 2001 From: timlinux Date: Sat, 20 Sep 2008 16:56:02 +0000 Subject: [PATCH] Plugin installer fixes from Borys git-svn-id: http://svn.osgeo.org/qgis/trunk@9363 c8812cc2-4d05-0410-92ff-de0c093fc19c --- .../plugins/plugin_installer/CMakeLists.txt | 7 - python/plugins/plugin_installer/INSTALL | 7 - python/plugins/plugin_installer/README | 6 - python/plugins/plugin_installer/__init__.py | 2 +- python/plugins/plugin_installer/dialog.py | 223 ------- python/plugins/plugin_installer/gui.py | 139 ---- python/plugins/plugin_installer/gui.ui | 186 ------ python/plugins/plugin_installer/icon.xpm | 311 --------- .../plugin_installer/installer_data.py | 6 +- .../plugins/plugin_installer/qgis_plugins.py | 158 ----- python/plugins/plugin_installer/repository.ui | 100 --- .../plugin_installer/repository_dialog.py | 30 - .../plugins/plugin_installer/repository_ui.py | 55 -- python/plugins/plugin_installer/resources.py | 608 ------------------ 14 files changed, 4 insertions(+), 1834 deletions(-) delete mode 100644 python/plugins/plugin_installer/INSTALL delete mode 100644 python/plugins/plugin_installer/README delete mode 100644 python/plugins/plugin_installer/dialog.py delete mode 100644 python/plugins/plugin_installer/gui.py delete mode 100644 python/plugins/plugin_installer/gui.ui delete mode 100644 python/plugins/plugin_installer/icon.xpm delete mode 100644 python/plugins/plugin_installer/qgis_plugins.py delete mode 100644 python/plugins/plugin_installer/repository.ui delete mode 100644 python/plugins/plugin_installer/repository_dialog.py delete mode 100644 python/plugins/plugin_installer/repository_ui.py delete mode 100644 python/plugins/plugin_installer/resources.py diff --git a/python/plugins/plugin_installer/CMakeLists.txt b/python/plugins/plugin_installer/CMakeLists.txt index 68c98c4eb2e..9d20b190257 100644 --- a/python/plugins/plugin_installer/CMakeLists.txt +++ b/python/plugins/plugin_installer/CMakeLists.txt @@ -1,13 +1,10 @@ #TODO: Need to configure cmake to run pyrcc4 and pyuic4 as required when the resource # file or the ui change SET(INSTALLER_FILES -dialog.py fetchingbase.py fetchingbase.ui guibase.py guibase.ui -gui.py -icon.xpm __init__.py installer_data.py installer_gui.py @@ -19,15 +16,11 @@ pluginerrorbase.ui plugin_installer.png PluginInstaller.png qgis-icon.png -qgis_plugins.py repoConnected.png repoDisabled.png repositorybase.py repositorybase.ui -repository_dialog.py -repository_ui.py repoUnavailable.png -resources.py resources_rc.py unzip.py ) diff --git a/python/plugins/plugin_installer/INSTALL b/python/plugins/plugin_installer/INSTALL deleted file mode 100644 index 6d493a712b1..00000000000 --- a/python/plugins/plugin_installer/INSTALL +++ /dev/null @@ -1,7 +0,0 @@ -You must have qgis 0.9+ with python bindings in order to run this plugin. If you want to modify the UI, you'll need th qt4 devtools. - -1) Edit the INST_DIR in the Makefile to match your environment -2) sudo make install -3) open qgis and turn on the Installer plugin - - diff --git a/python/plugins/plugin_installer/README b/python/plugins/plugin_installer/README deleted file mode 100644 index 0a6e8fd94a9..00000000000 --- a/python/plugins/plugin_installer/README +++ /dev/null @@ -1,6 +0,0 @@ -The installer plugin retrieves an xml description of available plugins and shows the a full listing. You can choose to install any given plugin which will download the zip file to your temp directory and extract it into your *local user's* python plugin dir (ie ~/.qgis/python/plugins NOT /usr/share/qgis/python/plugins) - -This plugin itself should, however, be installed in the system plugin directory to ensure all users have access to it. - -Matthew T. Perry -perrygeo at gmail.com diff --git a/python/plugins/plugin_installer/__init__.py b/python/plugins/plugin_installer/__init__.py index 0174745a939..e00611b54bd 100644 --- a/python/plugins/plugin_installer/__init__.py +++ b/python/plugins/plugin_installer/__init__.py @@ -20,7 +20,7 @@ def author_name(): return "perrygeo, borysiasty" def version(): - return "Version 0.06.1" + return "Version 0.06.2" def classFactory(iface): from installer_plugin import InstallerPlugin diff --git a/python/plugins/plugin_installer/dialog.py b/python/plugins/plugin_installer/dialog.py deleted file mode 100644 index eaadb58fd13..00000000000 --- a/python/plugins/plugin_installer/dialog.py +++ /dev/null @@ -1,223 +0,0 @@ -""" -Copyright (C) 2008 Matthew Perry -/*************************************************************************** - * * - * 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. * - * * - ***************************************************************************/ -""" -from PyQt4.QtCore import * -from PyQt4.QtGui import * - -from qgis.core import QgsApplication, QgsContextHelp - -from gui import Ui_Dialog -import resources - -from repository_dialog import RepositoryDialog - - -class InstallerPluginGui(QDialog, Ui_Dialog): - def __init__(self, parent, fl): - QDialog.__init__(self, parent, fl) - - self.default_repository_name = "Official QGIS repository" - self.default_repository = "http://spatialserver.net/cgi-bin/pyqgis_plugin.rb" - - self.setupUi(self) - - self.connect(self.buttonBrowse, SIGNAL("clicked()"), self.getAvailablePlugins) - self.connect(self.pbnOK, SIGNAL("clicked()"), self.installPlugin) - - # grab the click on the treelist - self.connect(self.treePlugins, SIGNAL("itemClicked(QTreeWidgetItem *,int)"), self.treeClicked) - - # repositories handling - self.connect(self.buttonAddRep, SIGNAL("clicked()"), self.addRepository) - self.connect(self.buttonEditRep, SIGNAL("clicked()"), self.editRepository) - self.connect(self.buttonDeleteRep, SIGNAL("clicked()"), self.deleteRepository) - - self.populateRepositories() - - - def on_pbnCancel_clicked(self): - self.close() - - - def getAvailablePlugins(self): - print "getting list of plugins" - repository = self.getRepository() - if not repository: - return - repository_url = str(repository[1]) - - from qgis_plugins import retrieve_list - QApplication.setOverrideCursor(Qt.WaitCursor) - - try: - pluginlist = retrieve_list(repository_url) - except IOError: - QApplication.restoreOverrideCursor() - QMessageBox.warning(self, "Error", "Couldn't connect to the repository.") - return - except Exception: - QApplication.restoreOverrideCursor() - QMessageBox.warning(self, "Error", "Couldn't parse output from repository.") - return - - #output = "QGIS python plugins avialable from \n%s\n" % self.repository - #for p in pluginlist: - # output += "\n%s ( version %s )" % (p["name"], p["version"]) - # output += "\n\t%s by %s" % (p["desc"],p["author"]) - #self.gui.txtAvailable.setText(output) - self.treePlugins.clear() - for p in pluginlist: - a = QTreeWidgetItem(self.treePlugins) - a.setText(0,p["name"]) - a.setText(1,p["version"]) - a.setText(2,p["desc"]) - a.setText(3,p["author"]) - a.setToolTip(2, p["desc"]) - - QApplication.restoreOverrideCursor() - - # resize the columns - # plugin name - self.treePlugins.resizeColumnToContents(0); - # version - self.treePlugins.resizeColumnToContents(1); - # author/contributor - self.treePlugins.resizeColumnToContents(3); - # description - self.treePlugins.setColumnWidth(2, 560); - - - def installPlugin(self): - """ installs currently selected plugin """ - plugin = self.linePlugin.text() - repository = self.getRepository() - if not repository: - return - repository_url = str(repository[1]) - plugindir = unicode(QgsApplication.qgisSettingsDirPath(),'utf-8') + "/python/plugins" - - QApplication.setOverrideCursor(Qt.WaitCursor) - from qgis_plugins import retrieve_list, install_plugin - print "install_plugin",plugin,plugindir,repository_url - result = install_plugin(plugin, plugindir, repository_url) - QApplication.restoreOverrideCursor() - - if result[0]: - QMessageBox.information(self, "Plugin installed successfully", result[1]) - else: - QMessageBox.warning(self, "Plugin installation failed", result[1]) - - - def treeClicked(self, item, col): - self.linePlugin.setText(item.text(0)) - - - def getRepository(self): - """ returns Name and URL of the current repository as a tuple or None if no repository is selected """ - if self.comboRepositories.currentIndex() == -1: - return None - - settings = QSettings() - reposGroup = "/Qgis/plugin-repos" - reposName = self.comboRepositories.currentText() - reposURL = settings.value(reposGroup+"/"+reposName+"/url", QVariant()).toString() - return (reposName, reposURL) - - - def populateRepositories(self): - """ populate repository combo box from the settings """ - self.comboRepositories.clear() - - settings = QSettings() - reposGroup = "/Qgis/plugin-repos" - settings.beginGroup(reposGroup) - - # add the default repository when there isn't any... - if len(settings.childGroups()) == 0: - settings.setValue(self.default_repository_name+"/url", QVariant(self.default_repository)) - - for key in settings.childGroups(): - self.comboRepositories.addItem(key) - - settings.endGroup() - - - def addRepository(self): - """ add repository button has been clicked """ - print "add" - dlg = RepositoryDialog(self) - if not dlg.exec_(): - return - - settings = QSettings() - reposGroup = "/Qgis/plugin-repos" - settings.beginGroup(reposGroup) - - reposName = dlg.editName.text() - reposURL = dlg.editURL.text() - print "name: "+reposName - print "url: "+reposURL - - # add to settings - settings.setValue(reposName+"/url", QVariant(reposURL)) - - # add to combobox - self.comboRepositories.addItem(reposName) - - - def editRepository(self): - """ edit repository button has been clicked """ - print "edit" - - current = self.comboRepositories.currentIndex() - if current == -1: - return - - (reposName, reposURL) = self.getRepository() - - dlg = RepositoryDialog(self) - dlg.editName.setText(reposName) - dlg.editURL.setText(reposURL) - if not dlg.exec_(): - return - - settings = QSettings() - reposGroup = "/Qgis/plugin-repos" - settings.beginGroup(reposGroup) - - # first delete old setting - settings.remove(reposName) - - # and create new one - settings.setValue(dlg.editName.text()+"/url", QVariant(dlg.editURL.text())) - - # update the name if it has been changed - self.comboRepositories.setItemText(current, dlg.editName.text()) - - - def deleteRepository(self): - """ delete repository button has been clicked """ - print "delete" - - current = self.comboRepositories.currentIndex() - if current == -1: - return - - settings = QSettings() - reposGroup = "/Qgis/plugin-repos" - settings.beginGroup(reposGroup) - - # delete from settings - reposName = self.comboRepositories.currentText() - settings.remove(reposName) - - # delete from combo box - self.comboRepositories.removeItem(current) diff --git a/python/plugins/plugin_installer/gui.py b/python/plugins/plugin_installer/gui.py deleted file mode 100644 index 75efe76d192..00000000000 --- a/python/plugins/plugin_installer/gui.py +++ /dev/null @@ -1,139 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'gui.ui' -# -# Created: Thu Jan 10 13:11:48 2008 -# by: PyQt4 UI code generator 4.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,761,471).size()).expandedTo(Dialog.minimumSizeHint())) - - self.vboxlayout = QtGui.QVBoxLayout(Dialog) - self.vboxlayout.setObjectName("vboxlayout") - - self.label = QtGui.QLabel(Dialog) - self.label.setObjectName("label") - self.vboxlayout.addWidget(self.label) - - self.groupBox = QtGui.QGroupBox(Dialog) - self.groupBox.setObjectName("groupBox") - - self.vboxlayout1 = QtGui.QVBoxLayout(self.groupBox) - self.vboxlayout1.setObjectName("vboxlayout1") - - self.hboxlayout = QtGui.QHBoxLayout() - self.hboxlayout.setObjectName("hboxlayout") - - self.label_4 = QtGui.QLabel(self.groupBox) - self.label_4.setObjectName("label_4") - self.hboxlayout.addWidget(self.label_4) - - self.comboRepositories = QtGui.QComboBox(self.groupBox) - - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.comboRepositories.sizePolicy().hasHeightForWidth()) - self.comboRepositories.setSizePolicy(sizePolicy) - self.comboRepositories.setObjectName("comboRepositories") - self.hboxlayout.addWidget(self.comboRepositories) - self.vboxlayout1.addLayout(self.hboxlayout) - - self.hboxlayout1 = QtGui.QHBoxLayout() - self.hboxlayout1.setObjectName("hboxlayout1") - - self.buttonBrowse = QtGui.QPushButton(self.groupBox) - - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.buttonBrowse.sizePolicy().hasHeightForWidth()) - self.buttonBrowse.setSizePolicy(sizePolicy) - self.buttonBrowse.setObjectName("buttonBrowse") - self.hboxlayout1.addWidget(self.buttonBrowse) - - spacerItem = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum) - self.hboxlayout1.addItem(spacerItem) - - self.buttonAddRep = QtGui.QPushButton(self.groupBox) - self.buttonAddRep.setObjectName("buttonAddRep") - self.hboxlayout1.addWidget(self.buttonAddRep) - - self.buttonEditRep = QtGui.QPushButton(self.groupBox) - self.buttonEditRep.setObjectName("buttonEditRep") - self.hboxlayout1.addWidget(self.buttonEditRep) - - self.buttonDeleteRep = QtGui.QPushButton(self.groupBox) - self.buttonDeleteRep.setObjectName("buttonDeleteRep") - self.hboxlayout1.addWidget(self.buttonDeleteRep) - self.vboxlayout1.addLayout(self.hboxlayout1) - self.vboxlayout.addWidget(self.groupBox) - - self.treePlugins = QtGui.QTreeWidget(Dialog) - self.treePlugins.setAlternatingRowColors(True) - self.treePlugins.setRootIsDecorated(False) - self.treePlugins.setItemsExpandable(False) - self.treePlugins.setObjectName("treePlugins") - self.vboxlayout.addWidget(self.treePlugins) - - self.hboxlayout2 = QtGui.QHBoxLayout() - self.hboxlayout2.setObjectName("hboxlayout2") - - self.label_2 = QtGui.QLabel(Dialog) - self.label_2.setObjectName("label_2") - self.hboxlayout2.addWidget(self.label_2) - - self.linePlugin = QtGui.QLineEdit(Dialog) - self.linePlugin.setObjectName("linePlugin") - self.hboxlayout2.addWidget(self.linePlugin) - - self.pbnOK = QtGui.QPushButton(Dialog) - self.pbnOK.setObjectName("pbnOK") - self.hboxlayout2.addWidget(self.pbnOK) - self.vboxlayout.addLayout(self.hboxlayout2) - - self.hboxlayout3 = QtGui.QHBoxLayout() - self.hboxlayout3.setObjectName("hboxlayout3") - - self.label_3 = QtGui.QLabel(Dialog) - self.label_3.setObjectName("label_3") - self.hboxlayout3.addWidget(self.label_3) - - self.pbnCancel = QtGui.QPushButton(Dialog) - - sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.pbnCancel.sizePolicy().hasHeightForWidth()) - self.pbnCancel.setSizePolicy(sizePolicy) - self.pbnCancel.setObjectName("pbnCancel") - self.hboxlayout3.addWidget(self.pbnCancel) - self.vboxlayout.addLayout(self.hboxlayout3) - - self.retranslateUi(Dialog) - QtCore.QMetaObject.connectSlotsByName(Dialog) - - def retranslateUi(self, Dialog): - Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "QGIS Plugin Installer", None, QtGui.QApplication.UnicodeUTF8)) - self.label.setText(QtGui.QApplication.translate("Dialog", "Select repository, retrieve the list of available plugins, select one and install it", None, QtGui.QApplication.UnicodeUTF8)) - self.groupBox.setTitle(QtGui.QApplication.translate("Dialog", "Repository", None, QtGui.QApplication.UnicodeUTF8)) - self.label_4.setText(QtGui.QApplication.translate("Dialog", "Active repository:", None, QtGui.QApplication.UnicodeUTF8)) - self.buttonBrowse.setText(QtGui.QApplication.translate("Dialog", "Get List", None, QtGui.QApplication.UnicodeUTF8)) - self.buttonAddRep.setText(QtGui.QApplication.translate("Dialog", "Add", None, QtGui.QApplication.UnicodeUTF8)) - self.buttonEditRep.setText(QtGui.QApplication.translate("Dialog", "Edit", None, QtGui.QApplication.UnicodeUTF8)) - self.buttonDeleteRep.setText(QtGui.QApplication.translate("Dialog", "Delete", None, QtGui.QApplication.UnicodeUTF8)) - self.treePlugins.headerItem().setText(0,QtGui.QApplication.translate("Dialog", "Name", None, QtGui.QApplication.UnicodeUTF8)) - self.treePlugins.headerItem().setText(1,QtGui.QApplication.translate("Dialog", "Version", None, QtGui.QApplication.UnicodeUTF8)) - self.treePlugins.headerItem().setText(2,QtGui.QApplication.translate("Dialog", "Description", None, QtGui.QApplication.UnicodeUTF8)) - self.treePlugins.headerItem().setText(3,QtGui.QApplication.translate("Dialog", "Author", None, QtGui.QApplication.UnicodeUTF8)) - self.label_2.setText(QtGui.QApplication.translate("Dialog", "Name of plugin to install", None, QtGui.QApplication.UnicodeUTF8)) - self.pbnOK.setText(QtGui.QApplication.translate("Dialog", "Install Plugin", None, QtGui.QApplication.UnicodeUTF8)) - self.label_3.setText(QtGui.QApplication.translate("Dialog", "The plugin will be installed to ~/.qgis/python/plugins", None, QtGui.QApplication.UnicodeUTF8)) - self.pbnCancel.setText(QtGui.QApplication.translate("Dialog", "Done", None, QtGui.QApplication.UnicodeUTF8)) - diff --git a/python/plugins/plugin_installer/gui.ui b/python/plugins/plugin_installer/gui.ui deleted file mode 100644 index 7fba6d722fb..00000000000 --- a/python/plugins/plugin_installer/gui.ui +++ /dev/null @@ -1,186 +0,0 @@ - - Dialog - - - - 0 - 0 - 761 - 471 - - - - QGIS Plugin Installer - - - - - - Select repository, retrieve the list of available plugins, select one and install it - - - - - - - Repository - - - - - - - - Active repository: - - - - - - - - 0 - 0 - - - - - - - - - - - - - 0 - 0 - - - - Get List - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Add - - - - - - - Edit - - - - - - - Delete - - - - - - - - - - - - true - - - false - - - false - - - - Name - - - - - Version - - - - - Description - - - - - Author - - - - - - - - - - Name of plugin to install - - - - - - - - - - Install Plugin - - - - - - - - - - - The plugin will be installed to ~/.qgis/python/plugins - - - - - - - - 0 - 0 - - - - Done - - - - - - - - - - diff --git a/python/plugins/plugin_installer/icon.xpm b/python/plugins/plugin_installer/icon.xpm deleted file mode 100644 index 3b742f19dac..00000000000 --- a/python/plugins/plugin_installer/icon.xpm +++ /dev/null @@ -1,311 +0,0 @@ -/* XPM */ -static const char *icon[] = { -/* columns rows colors chars-per-pixel */ -"48 48 257 2", -" c #4E4E57", -". c #555555", -"X c #55555E", -"o c #5B5B5B", -"O c #4F4F63", -"+ c #585868", -"@ c #5A5A7C", -"# c #437761", -"$ c #4D7373", -"% c gray39", -"& c #6A6A6A", -"* c #646476", -"= c #79617B", -"- c gray46", -"; c #72727C", -": c #7C7C7C", -"> c #006BD1", -", c #0075DB", -"< c #1E7CD6", -"1 c #007FE4", -"2 c #5E5E85", -"3 c #5F74A9", -"4 c #5B7DB6", -"5 c #62638A", -"6 c #676899", -"7 c #706F98", -"8 c #767788", -"9 c #72729F", -"0 c #6C6EA2", -"q c #6575AA", -"w c #617FB3", -"e c #7676A8", -"r c #7C7CB4", -"t c #019A01", -"y c #0D9313", -"u c #1A8C26", -"i c #15A70E", -"p c #1AAA11", -"a c #25B118", -"s c #31AE34", -"d c #32BA21", -"f c #33804D", -"g c #3DC128", -"h c #49B550", -"j c #43AF60", -"k c #49CA31", -"l c #51C52F", -"z c #59D43B", -"x c #66DD44", -"c c #73E54C", -"v c #0088ED", -"b c #0598FC", -"n c #129FFF", -"m c #1BA2FE", -"M c #28A6FE", -"N c #37A1EF", -"B c #38ABFC", -"V c #56B28F", -"C c #7D85AF", -"Z c #7884B6", -"A c #73BBBF", -"S c #528FCF", -"D c #539FDF", -"F c #4BB2FD", -"G c #52B1F1", -"H c #55B5FF", -"J c #5AB2F5", -"K c #5AB7FF", -"L c #5EBDFE", -"P c #6493D1", -"I c #7691C9", -"U c #68ACE6", -"Y c #6DB8EB", -"T c #64BAFE", -"R c #6EB7F2", -"E c #69BCFF", -"W c #79B7EA", -"Q c #70BEFD", -"! c #74C680", -"~ c #77C3F6", -"^ c #75C0FF", -"/ c #78C4F7", -"( c #7BC2FF", -") c #7CC8FB", -"_ c #866979", -"` c #A65646", -"' c #B56E4E", -"] c #A66D60", -"[ c #DF6923", -"{ c #D26D30", -"} c #CE7E5A", -"| c #A99020", -" . c #88F35A", -".. c #A2EA5B", -"X. c #B3E85C", -"o. c #FA9535", -"O. c #FFA23C", -"+. c #EEA85E", -"@. c #ECBE4F", -"#. c #FFA842", -"$. c #FFB14B", -"%. c #CCD555", -"&. c #DBC54F", -"*. c #848484", -"=. c #8B8B8B", -"-. c #868597", -";. c #989898", -":. c #8383AA", -">. c #8787BA", -",. c #8F9DAA", -"<. c #9999BB", -"1. c #99A5B2", -"2. c #9AA8B8", -"3. c gray64", -"4. c #A3A4AF", -"5. c #ACACAC", -"6. c #A5A9B6", -"7. c #A6ACBF", -"8. c #A9A9B9", -"9. c #A6B0B9", -"0. c #B2B2B2", -"q. c #B4B4BA", -"w. c #BBBBBB", -"e. c #8788C6", -"r. c #898BD7", -"t. c #9394C6", -"y. c #929FD2", -"u. c #9F9FD2", -"i. c #9C9CDA", -"p. c #9999E5", -"a. c #9B9BFE", -"s. c #83A0C6", -"d. c #98AAC9", -"f. c #93A7DA", -"g. c #9DB2CC", -"h. c #8CB7E7", -"j. c #87B4FC", -"k. c #99A6FF", -"l. c #95B0E3", -"z. c #96BDE3", -"x. c #97B9EC", -"c. c #94BBFF", -"v. c #A5A5C9", -"b. c #A4A8DB", -"n. c #ACACD9", -"m. c #AFB3C1", -"M. c #ADB3CC", -"N. c #A1B9D8", -"B. c #B2B2C9", -"V. c #B3B4D1", -"C. c #BABAD3", -"Z. c #BEBED9", -"A. c #ACACE9", -"S. c #A7A7FE", -"D. c #A5BFE5", -"F. c #A9B2E5", -"G. c #ADBDF0", -"H. c #B3A9FF", -"J. c #B3B3E6", -"K. c #BBBCE5", -"L. c #B7B6FE", -"P. c #AEDDBF", -"I. c #9FC5DF", -"U. c #84C5FF", -"Y. c #89C7FF", -"T. c #8FCBFC", -"R. c #9BCBEB", -"E. c #96C2F9", -"W. c #96CFF6", -"Q. c #94CAFF", -"!. c #98C2F5", -"~. c #99C5FF", -"^. c #9BCCFF", -"/. c #99D1FB", -"(. c #B6C4CF", -"). c #BBCEDB", -"_. c #A6C4EC", -"`. c #A4CCFF", -"'. c #ACC1F4", -"]. c #ABCCFF", -"[. c #ADD2EC", -"{. c #A6D3FD", -"}. c #B2CDE6", -"|. c #B0CFE8", -" X c #BFC2EB", -".X c #B3CCFF", -"XX c #BBCCFF", -"oX c #B2D0E7", -"OX c #B6DAF5", -"+X c #B2D9FF", -"@X c #BBDDFF", -"#X c #BEE1FC", -"$X c #DCAF81", -"%X c #D1B392", -"&X c #C4BBFF", -"*X c #C2C0B9", -"=X c #D0CEA7", -"-X c #E9E7A7", -";X c #C3C3C4", -":X c #C0C0CD", -">X c #CBCBCB", -",X c #C0C0D6", -"Xw.>XMXYXYXBXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX", -"YXYXYXYXYXYXYXYXYXYX5X3X>Xw.w.0.5.m.6.7.M.M.K.K.8X8.0.6X>Xw.;Xw.0.;X>XMXYXYXYXYXYXYXYXYXYXYXYXYX", -"YXYX>Xw.5.3.9.1.2.g.g.N.D.D.]..X.X.XXXXXXXwXwXwXtXV.: >X5.KXPXPXPXMX3X*X5.*XMXYXYXYXYXYXYXYXYXYX", -";X>X3.R ^ U.Q.^.^.^.`.`.`.].].]..X.X.XXXXXXXwXwXwX X- 5.4XJXKXPXPXPXPXPXq.*.*XMXYXYXYXYXYXYXYXYX", -"q.5Xq.H E ^ U.Q.^.^.^.`.`.`.].].]..X.X.XXXXXXXwXwXwX*.4.ZXDXJXJXPXPXPXHX: & w.BXYXYXYXYXYXYXYXYX", -"3X3XPXKX#X/.^ U.Q.^.^.^.`.`.`.].].]..X.X.XXXXXXXwXwX4.9XjXZXDXDXJXPXPX>Xo *.3XYXYXYXYXYXYXYXYXYX", -"MX0.HXHXHXHXT.^ U.Q.^.^.^.`.`.`.].].]..X.X.XXXXXXXwXK.hXhXjXZXDXDXJXPX=.o 5.MXYXYXYXYXYXYXYXYXYX", -"YXw.MXYXYXYXOXE ^ U.Q.^.^.^.`.`.`.].].]..X'.G.F.F.b.fXZXZXjXjXZXDXDX1X% - >XYXYXYXYXYXYXYXYXYXYX", -"YX6Xq.BXBXBXxXT E ^ U.Q.^.!.x.l.f.y.t.e.>.t.t.t.t.t.iXHXPXPXKXJXDXDX5.. ;.6XYXYXYXYXYXYXYXYXYXYX", -"YXBX3.MXMXMXMXh.P I Z Z e r r r r >.>.>.>.>.t.t.t.t.2XBXHXHXJXYXYXMX;.% w.BXYXYXYXYXYXYXYXYXYXYX", -"YXYXw.;X6X6X6X:X0 0 9 e e e r r r r >.>.>.>.>.v.V.C.dXMXMX6X6X6X6X5X3X3.3.6XYXYXYXYXYXYXYXYXYXYX", -"YXYX>X;XYX6X5X5Xe 0 0 9 e e e r >.<.C.,XiXBXYXBXMXMXMXMX6X6X6X6X5X3X3X3X5.;.5XYXYXYXYXYXYXYXYXYX", -"YXYX>X;XPXPXYX3X<.0 <.<.V.2XiXHXHXHXYXYXYXYXBXMXMXMXMX6X6X6X6X5X3X3X3X3X>X0.=.>XBXYXYXYXYXYXYXYX", -"YXYX>X;XPXPXPXJXyXKXPXPXJXHXHXHXHXYXYXYXYXBXMXMXMXMX6X6X6X6X5X).I.Y 3.=.& & - 3.6XYXYXYXYXYXYXYX", -"YXYX>X;X6XMXJXHXlXL PXJXHXHXHXHXYXYXYXYXBXMXMXMXMXoXR.Y G B b n m M - . - ;.3.;XMXYXYXYXYXYXYXYX", -"YXYX>X;X3X3.0.MXlXB ) HXHXHXHXYXYXYXYX[.R.~ F M b n M M N S 4 3 6 6 5 5 -.q.5XMXYXYXYXYXYXYXYXYX", -"YXYX>X;X6X6X;X;XlXF M /.AXOXW.~ B m n n M B B F F F D 3 6 <.V.9X7XgXK.n.t.0 9 m.MXYXYXYXYXYXYXYX", -"YXYX>X*X3X3.0.BXkXK H n n m M B F K K K K K K K J w 6 B.CXDXDXZXZXjXhXhXtXqXt.0 :.3XBXYXYXYXYXYX", -"YXYX>Xw.yXxX;X3XkXT T T T T T T T T T T T T T U q :.SXPXDXDXZXZXjXhXhXtXtXqX&XA.e 7 ;XMXYXYXYXYX", -"YXYX>Xw.W < z.YXkXQ Q Q Q Q Q Q Q Q Q Q Q Q U 6 <.PXPXPXDXZXZXjXhXhXtXtXqX&XL.L.S.e 7 *XMXYXYXYX", -"YXYX>Xw.W , > }.kX( ( ( ( ( ( ( ( ( ( ( ( j.0 <.PXPXPXPXJXZXjXhXhXtXtXqX&XL.L.H.S.a.e 8 >XBXYXYX", -"YXYX>Xw.W 1 , }.zXY.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.c.e >.PXPXPXPXPXPXjXhXhXtXtXqX&XL.L.H.S.a.a.p.0 -.3XYXYX", -"YXYX>Xw.~ v 1 |.zXQ.Q.Q.Q.Q.Q.Q.Q.Q.Q.c.r.9 JXPXPXPXPXPXPXZXhXtXtXqX&XL.L.H.S.a.a.a.a.e.5 5.MXYX", -"YXYX>Xw./ b v |.zX^.^.^.^.^.^.^.^.^.~.k.0 XYX", -"YXYX>Xq.{.b b [.zX^.^.^.^.^.^.(.*X%X} ` e PXPXPXPXPXPXPXPXPXhXeXeX&XL.H.S.a.a.a.a.S.S.H.>.2 0.MX", -"YXYX>X0.YXkXB [.zX{.{.{.$X+.O.#.#.O.[ = V.PXPXPXPXPXPXPXPXPXmXnXnXmXmX&Xa.a.a.a.S.S.H.L.i.5 ;.6X", -"YXYX>X0.YXBXBXMXzX{.{.{.O.O.#.#.$.o.{ 6 qXhXDXPXPXPXPXPXPXGXmXnXvXbXGXLX&Xa.a.S.S.H.L.L.L.6 - >X", -"YXYX>X0.BXBXMXMXzX{.{.{.O.#.#.$.$.o.' e tXtXtXtXjXDXPXPXLXGXLX0Xe.p.&XLXJXS.S.S.H.L.L.qXqX9 * ;X", -"YXYX>X0.BXMXMXMXzX+X+X+XX.%.@.$.$.o.] t.tXtXtXtXtXtXuXDXLXLXX0.MXMXMXMXsX+X+X+X . . ...&.o._ u.tXtXtXtXtXtXtXDXLXuX9 =X+X_.6 L.PXhXH.L.qXqXtXrXgX:.+ 5.", -"YXYX>X5.MXMXMXMXsX@X@X@X . . . .l | _ J.tXtXtXtXtXtXtXJXLXA.-.-X@X@X6 pXPXSXfXfXfXfXfXfXfX:.+ 5.", -"YXYX>X5.MXMXMXMXaX@X@X@Xc c c c g t $ K.hXhXtXtXqX&XL.DXLXp.7 -X@Xd.9 SXPXHXNXNXNXNXNXNXNX:.+ 5.", -"YXYX>X5.MXMXMX6XaX#X#X#Xx x x x d t $ K.hXtXtXqX&XL.L.ZXLX&Xr 9 C 6 X5.MXMX6X6XaXlXlXlXz z z z d t # u.tXtXqX&XL.L.H.&XLXmXH.r.r. XGXLXPXPXPXPXJXJXJXJXiX5 % ;X", -"YXYX>X5.MX6X6X6XaXlXlXlXk k k k a t f >.tXqX&XL.L.H.S.a.uXGXmXvXvXmXGXLXPXPXPXPXPXPXPXPXv.@ - >X", -"YXYX;X5.6X6X6X6XaXcXcXcXg g g g p t u e qX&XL.L.H.S.a.a.a.&XbXnXnXmXbXPXPXPXPXPXPXPXPXPXe X =.5X", -"YXYX;X3.6X6X6X6XaXcXcXcXd d d d p t t 5 A.L.L.H.S.a.a.a.a.S.S.L.&XL.qXPXPXPXPXPXPXPXPX.L.H.S.a.a.a.a.S.S.H.L.L.qXqXDXPXPXPXPXPXPXPXe O - >XYX", -"YXYX;X3.;X;.0.3XxXcXcXcXi i i i i t t y 6 S.S.a.a.a.a.S.S.H.L.L.qXqXtXjXPXPXPXPXPXPXB.2 . 3.6XYX", -"YXYX;X3.>X>X0.w.xXFXFXFXt t t t s j V A I r a.a.a.a.S.S.H.L.L.qXqXtXhXjXPXPXPXPXPXdX6 : >XYXYX", -"YXYX;X3.0.3.;X3XxXFXFXFXh ! P.SXFXlX~.~.E.0 e.a.a.S.S.H.L.L.qXqXtXhXjXjXDXPXPXPXNX9 O & 0.MXYXYX", -"YXYX;X3.5Xw.;.;XxXFXFXFXFXFXFXFXFXFX^.^.^.h.0 r.S.S.H.L.L.qXqXtXhXjXjXZXDXPXPXNX9 O % 3.6XYXYXYX", -"YXYX3X*.;X3X>X>XxXKXKXKXKXKXKXKXKXKXcX^.^.^.s.6 r S.L.L.qXqXtXhXjXjXZXDXDXPXB.6 O % 3.3XYXYXYXYX", -"YXYXBX0.- 0.3X3XMXKXKXKXKXKXKXKXKXBX;X,.8 % o X 2 0 i.qXqXtXhXjXjXZXDXCXZ.e 2 % 3.3XYXYXYXYXYX", -"YXYXYX6X5.& ;.>XMXPXPXPXPX5Xw.;.: % . . . o & *.=.8 5 0 >.u.K.K.7Xv.>.6 5 O . : 5.6XYXYXYXYXYXYX", -"YXYXYXYXMXw.- : 6X>X0.=.% o . . o % - =.3.w.>X3X5X>X3.; * 2 2 2 2 @ + X o - 3.>XMXYXYXYXYXYXYXYX", -"YXYXYXYXYXMX>X*.% o . . o & : ;.5.;X>X5X6XBXYXYXYXYX6X>X0.;.*.: : : *.;.0.>X6XYXYXYXYXYXYXYXYXYX", -"YXYXYXYXYXYXBX3X5.*.=.;.0.;X3X6XMXYXYXYXYXYXYXYXYXYXYXYXMX6X3X3X3X3X3X6XMXYXYXYXYXYXYXYXYXYXYXYX" -}; diff --git a/python/plugins/plugin_installer/installer_data.py b/python/plugins/plugin_installer/installer_data.py index e1210a9fa33..a0d4e4c8c43 100644 --- a/python/plugins/plugin_installer/installer_data.py +++ b/python/plugins/plugin_installer/installer_data.py @@ -54,10 +54,10 @@ seenPluginGroup = "/Qgis/plugin-seen" # knownRepos: (name, url for QGIS 0.x, url for QGIS 1.x, possible depreciated url, another possible depreciated url) knownRepos = [("Official QGIS Repository","http://spatialserver.net/cgi-bin/pyqgis_plugin.rb","http://spatialserver.net/cgi-bin/pyqgis_plugin.rb","",""), - ("Carson Farmer's Repository","http://www.ftools.ca/cfarmerQgisRepo.xml","","http://www.geog.uvic.ca/spar/carson/cfarmerQgisRepo.xml",""), + ("Carson Farmer's Repository","http://www.ftools.ca/cfarmerQgisRepo_0.xx.xml","","http://www.geog.uvic.ca/spar/carson/cfarmerQgisRepo.xml",""), ("Barry Rowlingson's Repository","http://www.maths.lancs.ac.uk/~rowlings/Qgis/Plugins/plugins.xml","","",""), ("Borys Jurgiel's Repository","http://bwj.aster.net.pl/qgis-oldapi/plugins.xml","http://bwj.aster.net.pl/qgis/plugins.xml","",""), - ("Faunalia Repository","http://faunalia.it/qgis/plugins.xml","","","")] + ("Faunalia Repository","http://faunalia.it/qgis/plugins.xml","http://faunalia.it/qgis/1.x/plugins.xml","","")] @@ -169,7 +169,7 @@ class Repositories(QObject): settings.beginGroup(reposGroup) # first, update the QSettings repositories if needed if len(settings.childGroups()) == 0: # add the default repository when there isn't any - settings.setValue(self.knownRepos[0][0]+"/url", QVariant(self.knownRepos[0][self.QGISver+1])) + settings.setValue(knownRepos[0][0]+"/url", QVariant(knownRepos[0][self.QGISver+1])) else: # else update invalid urls for key in settings.childGroups(): url = settings.value(key+"/url", QVariant()).toString() diff --git a/python/plugins/plugin_installer/qgis_plugins.py b/python/plugins/plugin_installer/qgis_plugins.py deleted file mode 100644 index 4b6330d58b5..00000000000 --- a/python/plugins/plugin_installer/qgis_plugins.py +++ /dev/null @@ -1,158 +0,0 @@ -""" -qgis_plugins.py -author: Matthew Perry -date: 2007-Oct-21 -/*************************************************************************** - * * - * 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. * - * * - ***************************************************************************/ -""" -import urllib -import sys -import os -import tempfile -import zipfile -from xml.dom import minidom, Node - - -class unzip: - """ unzip.py - Version: 1.1 - - Extract a zipfile to the directory provided - It first creates the directory structure to house the files - then it extracts the files to it. - - import unzip - un = unzip.unzip() - un.extract(r'c:\testfile.zip', 'c:\testoutput') - - - By Doug Tolton (http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/252508) - """ - def __init__(self, verbose = True, percent = 10): - self.verbose = verbose - self.percent = percent - - def extract(self, file, dir): - if not dir.endswith(':') and not os.path.exists(dir): - os.mkdir(dir) - - zf = zipfile.ZipFile(file) - - # create directory structure to house files - print "Creating plugin structure:" - self._createstructure(file, dir) - - num_files = len(zf.namelist()) - percent = self.percent - divisions = 100 / percent - perc = int(num_files / divisions) - - # extract files to directory structure - for i, name in enumerate(zf.namelist()): - - if self.verbose == True: - print "Extracting %s" % name - elif perc > 0 and (i % perc) == 0 and i > 0: - complete = int (i / perc) * percent - print "%s%% complete" % complete - - if not name.endswith('/'): - outfile = open(os.path.join(dir, name), 'wb') - outfile.write(zf.read(name)) - outfile.flush() - outfile.close() - - - def _createstructure(self, file, dir): - self._makedirs(self._listdirs(file), dir) - - - def _makedirs(self, directories, basedir): - """ Create any directories that don't currently exist """ - print "Processing directories contained in the zip file: %s" % directories - for dir in directories: - curdir = os.path.join(basedir, dir) - # normalize the path - curdir = os.path.normpath(curdir) - print "Checking to see if we should create %s" % curdir - if not os.path.exists(curdir): - # use makedirs to create parent directories as well - print "Creating %s" % curdir - os.makedirs(curdir) - - def _listdirs(self, file): - """ Grabs all the directories in the zip structure - This is necessary to create the structure before trying - to extract the file to it. """ - zf = zipfile.ZipFile(file) - - dirs = [] - - for name in zf.namelist(): - (path, filename) = os.path.split(name) - - if path not in dirs: - dirs.append(path) - - dirs.sort() - return dirs - - -def retrieve_list(repos): - repos = urllib.urlopen(repos).read() - repos_xml = minidom.parseString(repos) - plugin_nodes = repos_xml.getElementsByTagName("pyqgis_plugin") - plugins = [ - {"name" : x.getAttribute("name").encode(), - "version" : x.getAttribute("version").encode(), - "desc" : x.getElementsByTagName("description")[0].childNodes[0].nodeValue.encode(), - "author" : x.getElementsByTagName("author_name")[0].childNodes[0].nodeValue.encode(), - "url" : x.getElementsByTagName("download_url")[0].childNodes[0].nodeValue.encode(), - "filename": x.getElementsByTagName("file_name")[0].childNodes[0].nodeValue.encode()} - for x in plugin_nodes] - - return plugins - -def install_plugin(plugin, plugindir, repos): - # normalize the path to the users plugin directory - plugindir = os.path.normpath(plugindir) - plugin_list = retrieve_list(repos) - target = [x for x in plugin_list if x["name"] == plugin] - if target: - # Take the first match - target = target[0] - url = target["url"] - filename = target["filename"] - - print "Retrieving from %s" % url - try: - tmpdir = tempfile.gettempdir() - outfile = os.path.join(tmpdir,filename) - urllib.urlretrieve(url,outfile) - except: - return (False, "Failed to download file to %s" % outfile) - return - - # make sure that the parent directory exists - if not os.path.exists(plugindir): - os.makedirs(plugindir) - - print "Extracting to plugin directory (%s)" % plugindir - try: - un = unzip() - un.extract(outfile, plugindir) - except: - return (False, "Failed to unzip file to %s ... check permissions" % plugindir) - - else: - return (False, "No plugins found named %s" % plugin) - - return (True, "Python plugin installed. Go to Plugins > Plugin Manager to enable %s." % plugin ) - - diff --git a/python/plugins/plugin_installer/repository.ui b/python/plugins/plugin_installer/repository.ui deleted file mode 100644 index cb12c5c7a2a..00000000000 --- a/python/plugins/plugin_installer/repository.ui +++ /dev/null @@ -1,100 +0,0 @@ - - RepositoryDetailsDialog - - - - 0 - 0 - 395 - 169 - - - - Repository details - - - - - - Name: - - - - - - - - - - URL: - - - - - - - http:// - - - - - - - Qt::Vertical - - - - 181 - 40 - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok - - - - - - - - - buttonBox - accepted() - RepositoryDetailsDialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - RepositoryDetailsDialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - - diff --git a/python/plugins/plugin_installer/repository_dialog.py b/python/plugins/plugin_installer/repository_dialog.py deleted file mode 100644 index 077f017360b..00000000000 --- a/python/plugins/plugin_installer/repository_dialog.py +++ /dev/null @@ -1,30 +0,0 @@ -""" -Copyright (C) 2008 Matthew Perry -/*************************************************************************** - * * - * 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. * - * * - ***************************************************************************/ -""" -from PyQt4.QtCore import * -from PyQt4.QtGui import * - -from repository_ui import Ui_RepositoryDetailsDialog - -class RepositoryDialog(QDialog, Ui_RepositoryDetailsDialog): - def __init__(self, parent=None): - QDialog.__init__(self, parent) - - self.setupUi(self) - - self.connect(self.editName, SIGNAL("textChanged(const QString &)"), self.changed) - self.connect(self.editURL, SIGNAL("textChanged(const QString &)"), self.changed) - - self.changed(None) - - def changed(self, string): - enable = (self.editName.text().count() > 0 and self.editURL.text().count() > 0) - self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(enable) diff --git a/python/plugins/plugin_installer/repository_ui.py b/python/plugins/plugin_installer/repository_ui.py deleted file mode 100644 index 7537963908b..00000000000 --- a/python/plugins/plugin_installer/repository_ui.py +++ /dev/null @@ -1,55 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'repository.ui' -# -# Created: Thu Jan 10 14:22:08 2008 -# by: PyQt4 UI code generator 4.3 -# -# WARNING! All changes made in this file will be lost! - -from PyQt4 import QtCore, QtGui - -class Ui_RepositoryDetailsDialog(object): - def setupUi(self, RepositoryDetailsDialog): - RepositoryDetailsDialog.setObjectName("RepositoryDetailsDialog") - RepositoryDetailsDialog.resize(QtCore.QSize(QtCore.QRect(0,0,395,169).size()).expandedTo(RepositoryDetailsDialog.minimumSizeHint())) - - self.gridlayout = QtGui.QGridLayout(RepositoryDetailsDialog) - self.gridlayout.setObjectName("gridlayout") - - self.label = QtGui.QLabel(RepositoryDetailsDialog) - self.label.setObjectName("label") - self.gridlayout.addWidget(self.label,0,0,1,1) - - self.editName = QtGui.QLineEdit(RepositoryDetailsDialog) - self.editName.setObjectName("editName") - self.gridlayout.addWidget(self.editName,0,1,1,1) - - self.label_2 = QtGui.QLabel(RepositoryDetailsDialog) - self.label_2.setObjectName("label_2") - self.gridlayout.addWidget(self.label_2,1,0,1,1) - - self.editURL = QtGui.QLineEdit(RepositoryDetailsDialog) - self.editURL.setObjectName("editURL") - self.gridlayout.addWidget(self.editURL,1,1,1,1) - - spacerItem = QtGui.QSpacerItem(181,40,QtGui.QSizePolicy.Minimum,QtGui.QSizePolicy.Expanding) - self.gridlayout.addItem(spacerItem,2,0,1,2) - - self.buttonBox = QtGui.QDialogButtonBox(RepositoryDetailsDialog) - self.buttonBox.setOrientation(QtCore.Qt.Horizontal) - self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.NoButton|QtGui.QDialogButtonBox.Ok) - self.buttonBox.setObjectName("buttonBox") - self.gridlayout.addWidget(self.buttonBox,3,0,1,2) - - self.retranslateUi(RepositoryDetailsDialog) - QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("accepted()"),RepositoryDetailsDialog.accept) - QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("rejected()"),RepositoryDetailsDialog.reject) - QtCore.QMetaObject.connectSlotsByName(RepositoryDetailsDialog) - - def retranslateUi(self, RepositoryDetailsDialog): - RepositoryDetailsDialog.setWindowTitle(QtGui.QApplication.translate("RepositoryDetailsDialog", "Repository details", None, QtGui.QApplication.UnicodeUTF8)) - self.label.setText(QtGui.QApplication.translate("RepositoryDetailsDialog", "Name:", None, QtGui.QApplication.UnicodeUTF8)) - self.label_2.setText(QtGui.QApplication.translate("RepositoryDetailsDialog", "URL:", None, QtGui.QApplication.UnicodeUTF8)) - self.editURL.setText(QtGui.QApplication.translate("RepositoryDetailsDialog", "http://", None, QtGui.QApplication.UnicodeUTF8)) - diff --git a/python/plugins/plugin_installer/resources.py b/python/plugins/plugin_installer/resources.py deleted file mode 100644 index 07e7662c57a..00000000000 --- a/python/plugins/plugin_installer/resources.py +++ /dev/null @@ -1,608 +0,0 @@ -# -*- coding: utf-8 -*- - -# Resource object code -# -# Created: Thu Jan 10 13:11:47 2008 -# by: The Resource Compiler for PyQt (Qt v4.2.3) -# -# WARNING! All changes made in this file will be lost! - -from PyQt4 import QtCore - -qt_resource_data = "\ -\x00\x00\x23\x2f\ -\x2f\ -\x2a\x20\x58\x50\x4d\x20\x2a\x2f\x0a\x73\x74\x61\x74\x69\x63\x20\ -\x63\x68\x61\x72\x20\x2a\x69\x63\x6f\x6e\x5b\x5d\x20\x3d\x20\x7b\ -\x0a\x2f\x2a\x20\x63\x6f\x6c\x75\x6d\x6e\x73\x20\x72\x6f\x77\x73\ -\x20\x63\x6f\x6c\x6f\x72\x73\x20\x63\x68\x61\x72\x73\x2d\x70\x65\ -\x72\x2d\x70\x69\x78\x65\x6c\x20\x2a\x2f\x0a\x22\x34\x38\x20\x34\ -\x38\x20\x32\x35\x37\x20\x32\x22\x2c\x0a\x22\x20\x20\x20\x63\x20\ -\x23\x34\x45\x34\x45\x35\x37\x22\x2c\x0a\x22\x2e\x20\x20\x63\x20\ -\x23\x35\x35\x35\x35\x35\x35\x22\x2c\x0a\x22\x58\x20\x20\x63\x20\ -\x23\x35\x35\x35\x35\x35\x45\x22\x2c\x0a\x22\x6f\x20\x20\x63\x20\ -\x23\x35\x42\x35\x42\x35\x42\x22\x2c\x0a\x22\x4f\x20\x20\x63\x20\ -\x23\x34\x46\x34\x46\x36\x33\x22\x2c\x0a\x22\x2b\x20\x20\x63\x20\ -\x23\x35\x38\x35\x38\x36\x38\x22\x2c\x0a\x22\x40\x20\x20\x63\x20\ -\x23\x35\x41\x35\x41\x37\x43\x22\x2c\x0a\x22\x23\x20\x20\x63\x20\ -\x23\x34\x33\x37\x37\x36\x31\x22\x2c\x0a\x22\x24\x20\x20\x63\x20\ -\x23\x34\x44\x37\x33\x37\x33\x22\x2c\x0a\x22\x25\x20\x20\x63\x20\ -\x67\x72\x61\x79\x33\x39\x22\x2c\x0a\x22\x26\x20\x20\x63\x20\x23\ -\x36\x41\x36\x41\x36\x41\x22\x2c\x0a\x22\x2a\x20\x20\x63\x20\x23\ -\x36\x34\x36\x34\x37\x36\x22\x2c\x0a\x22\x3d\x20\x20\x63\x20\x23\ -\x37\x39\x36\x31\x37\x42\x22\x2c\x0a\x22\x2d\x20\x20\x63\x20\x67\ -\x72\x61\x79\x34\x36\x22\x2c\x0a\x22\x3b\x20\x20\x63\x20\x23\x37\ -\x32\x37\x32\x37\x43\x22\x2c\x0a\x22\x3a\x20\x20\x63\x20\x23\x37\ -\x43\x37\x43\x37\x43\x22\x2c\x0a\x22\x3e\x20\x20\x63\x20\x23\x30\ -\x30\x36\x42\x44\x31\x22\x2c\x0a\x22\x2c\x20\x20\x63\x20\x23\x30\ -\x30\x37\x35\x44\x42\x22\x2c\x0a\x22\x3c\x20\x20\x63\x20\x23\x31\ -\x45\x37\x43\x44\x36\x22\x2c\x0a\x22\x31\x20\x20\x63\x20\x23\x30\ -\x30\x37\x46\x45\x34\x22\x2c\x0a\x22\x32\x20\x20\x63\x20\x23\x35\ -\x45\x35\x45\x38\x35\x22\x2c\x0a\x22\x33\x20\x20\x63\x20\x23\x35\ -\x46\x37\x34\x41\x39\x22\x2c\x0a\x22\x34\x20\x20\x63\x20\x23\x35\ -\x42\x37\x44\x42\x36\x22\x2c\x0a\x22\x35\x20\x20\x63\x20\x23\x36\ -\x32\x36\x33\x38\x41\x22\x2c\x0a\x22\x36\x20\x20\x63\x20\x23\x36\ -\x37\x36\x38\x39\x39\x22\x2c\x0a\x22\x37\x20\x20\x63\x20\x23\x37\ -\x30\x36\x46\x39\x38\x22\x2c\x0a\x22\x38\x20\x20\x63\x20\x23\x37\ -\x36\x37\x37\x38\x38\x22\x2c\x0a\x22\x39\x20\x20\x63\x20\x23\x37\ -\x32\x37\x32\x39\x46\x22\x2c\x0a\x22\x30\x20\x20\x63\x20\x23\x36\ -\x43\x36\x45\x41\x32\x22\x2c\x0a\x22\x71\x20\x20\x63\x20\x23\x36\ -\x35\x37\x35\x41\x41\x22\x2c\x0a\x22\x77\x20\x20\x63\x20\x23\x36\ -\x31\x37\x46\x42\x33\x22\x2c\x0a\x22\x65\x20\x20\x63\x20\x23\x37\ -\x36\x37\x36\x41\x38\x22\x2c\x0a\x22\x72\x20\x20\x63\x20\x23\x37\ -\x43\x37\x43\x42\x34\x22\x2c\x0a\x22\x74\x20\x20\x63\x20\x23\x30\ -\x31\x39\x41\x30\x31\x22\x2c\x0a\x22\x79\x20\x20\x63\x20\x23\x30\ -\x44\x39\x33\x31\x33\x22\x2c\x0a\x22\x75\x20\x20\x63\x20\x23\x31\ -\x41\x38\x43\x32\x36\x22\x2c\x0a\x22\x69\x20\x20\x63\x20\x23\x31\ -\x35\x41\x37\x30\x45\x22\x2c\x0a\x22\x70\x20\x20\x63\x20\x23\x31\ -\x41\x41\x41\x31\x31\x22\x2c\x0a\x22\x61\x20\x20\x63\x20\x23\x32\ -\x35\x42\x31\x31\x38\x22\x2c\x0a\x22\x73\x20\x20\x63\x20\x23\x33\ -\x31\x41\x45\x33\x34\x22\x2c\x0a\x22\x64\x20\x20\x63\x20\x23\x33\ -\x32\x42\x41\x32\x31\x22\x2c\x0a\x22\x66\x20\x20\x63\x20\x23\x33\ -\x33\x38\x30\x34\x44\x22\x2c\x0a\x22\x67\x20\x20\x63\x20\x23\x33\ -\x44\x43\x31\x32\x38\x22\x2c\x0a\x22\x68\x20\x20\x63\x20\x23\x34\ -\x39\x42\x35\x35\x30\x22\x2c\x0a\x22\x6a\x20\x20\x63\x20\x23\x34\ -\x33\x41\x46\x36\x30\x22\x2c\x0a\x22\x6b\x20\x20\x63\x20\x23\x34\ -\x39\x43\x41\x33\x31\x22\x2c\x0a\x22\x6c\x20\x20\x63\x20\x23\x35\ -\x31\x43\x35\x32\x46\x22\x2c\x0a\x22\x7a\x20\x20\x63\x20\x23\x35\ -\x39\x44\x34\x33\x42\x22\x2c\x0a\x22\x78\x20\x20\x63\x20\x23\x36\ -\x36\x44\x44\x34\x34\x22\x2c\x0a\x22\x63\x20\x20\x63\x20\x23\x37\ -\x33\x45\x35\x34\x43\x22\x2c\x0a\x22\x76\x20\x20\x63\x20\x23\x30\ -\x30\x38\x38\x45\x44\x22\x2c\x0a\x22\x62\x20\x20\x63\x20\x23\x30\ -\x35\x39\x38\x46\x43\x22\x2c\x0a\x22\x6e\x20\x20\x63\x20\x23\x31\ -\x32\x39\x46\x46\x46\x22\x2c\x0a\x22\x6d\x20\x20\x63\x20\x23\x31\ -\x42\x41\x32\x46\x45\x22\x2c\x0a\x22\x4d\x20\x20\x63\x20\x23\x32\ -\x38\x41\x36\x46\x45\x22\x2c\x0a\x22\x4e\x20\x20\x63\x20\x23\x33\ -\x37\x41\x31\x45\x46\x22\x2c\x0a\x22\x42\x20\x20\x63\x20\x23\x33\ -\x38\x41\x42\x46\x43\x22\x2c\x0a\x22\x56\x20\x20\x63\x20\x23\x35\ -\x36\x42\x32\x38\x46\x22\x2c\x0a\x22\x43\x20\x20\x63\x20\x23\x37\ -\x44\x38\x35\x41\x46\x22\x2c\x0a\x22\x5a\x20\x20\x63\x20\x23\x37\ -\x38\x38\x34\x42\x36\x22\x2c\x0a\x22\x41\x20\x20\x63\x20\x23\x37\ -\x33\x42\x42\x42\x46\x22\x2c\x0a\x22\x53\x20\x20\x63\x20\x23\x35\ -\x32\x38\x46\x43\x46\x22\x2c\x0a\x22\x44\x20\x20\x63\x20\x23\x35\ -\x33\x39\x46\x44\x46\x22\x2c\x0a\x22\x46\x20\x20\x63\x20\x23\x34\ -\x42\x42\x32\x46\x44\x22\x2c\x0a\x22\x47\x20\x20\x63\x20\x23\x35\ -\x32\x42\x31\x46\x31\x22\x2c\x0a\x22\x48\x20\x20\x63\x20\x23\x35\ -\x35\x42\x35\x46\x46\x22\x2c\x0a\x22\x4a\x20\x20\x63\x20\x23\x35\ -\x41\x42\x32\x46\x35\x22\x2c\x0a\x22\x4b\x20\x20\x63\x20\x23\x35\ -\x41\x42\x37\x46\x46\x22\x2c\x0a\x22\x4c\x20\x20\x63\x20\x23\x35\ -\x45\x42\x44\x46\x45\x22\x2c\x0a\x22\x50\x20\x20\x63\x20\x23\x36\ -\x34\x39\x33\x44\x31\x22\x2c\x0a\x22\x49\x20\x20\x63\x20\x23\x37\ -\x36\x39\x31\x43\x39\x22\x2c\x0a\x22\x55\x20\x20\x63\x20\x23\x36\ -\x38\x41\x43\x45\x36\x22\x2c\x0a\x22\x59\x20\x20\x63\x20\x23\x36\ -\x44\x42\x38\x45\x42\x22\x2c\x0a\x22\x54\x20\x20\x63\x20\x23\x36\ -\x34\x42\x41\x46\x45\x22\x2c\x0a\x22\x52\x20\x20\x63\x20\x23\x36\ -\x45\x42\x37\x46\x32\x22\x2c\x0a\x22\x45\x20\x20\x63\x20\x23\x36\ -\x39\x42\x43\x46\x46\x22\x2c\x0a\x22\x57\x20\x20\x63\x20\x23\x37\ -\x39\x42\x37\x45\x41\x22\x2c\x0a\x22\x51\x20\x20\x63\x20\x23\x37\ -\x30\x42\x45\x46\x44\x22\x2c\x0a\x22\x21\x20\x20\x63\x20\x23\x37\ -\x34\x43\x36\x38\x30\x22\x2c\x0a\x22\x7e\x20\x20\x63\x20\x23\x37\ -\x37\x43\x33\x46\x36\x22\x2c\x0a\x22\x5e\x20\x20\x63\x20\x23\x37\ -\x35\x43\x30\x46\x46\x22\x2c\x0a\x22\x2f\x20\x20\x63\x20\x23\x37\ -\x38\x43\x34\x46\x37\x22\x2c\x0a\x22\x28\x20\x20\x63\x20\x23\x37\ -\x42\x43\x32\x46\x46\x22\x2c\x0a\x22\x29\x20\x20\x63\x20\x23\x37\ -\x43\x43\x38\x46\x42\x22\x2c\x0a\x22\x5f\x20\x20\x63\x20\x23\x38\ -\x36\x36\x39\x37\x39\x22\x2c\x0a\x22\x60\x20\x20\x63\x20\x23\x41\ -\x36\x35\x36\x34\x36\x22\x2c\x0a\x22\x27\x20\x20\x63\x20\x23\x42\ -\x35\x36\x45\x34\x45\x22\x2c\x0a\x22\x5d\x20\x20\x63\x20\x23\x41\ -\x36\x36\x44\x36\x30\x22\x2c\x0a\x22\x5b\x20\x20\x63\x20\x23\x44\ -\x46\x36\x39\x32\x33\x22\x2c\x0a\x22\x7b\x20\x20\x63\x20\x23\x44\ -\x32\x36\x44\x33\x30\x22\x2c\x0a\x22\x7d\x20\x20\x63\x20\x23\x43\ -\x45\x37\x45\x35\x41\x22\x2c\x0a\x22\x7c\x20\x20\x63\x20\x23\x41\ -\x39\x39\x30\x32\x30\x22\x2c\x0a\x22\x20\x2e\x20\x63\x20\x23\x38\ -\x38\x46\x33\x35\x41\x22\x2c\x0a\x22\x2e\x2e\x20\x63\x20\x23\x41\ -\x32\x45\x41\x35\x42\x22\x2c\x0a\x22\x58\x2e\x20\x63\x20\x23\x42\ -\x33\x45\x38\x35\x43\x22\x2c\x0a\x22\x6f\x2e\x20\x63\x20\x23\x46\ -\x41\x39\x35\x33\x35\x22\x2c\x0a\x22\x4f\x2e\x20\x63\x20\x23\x46\ -\x46\x41\x32\x33\x43\x22\x2c\x0a\x22\x2b\x2e\x20\x63\x20\x23\x45\ -\x45\x41\x38\x35\x45\x22\x2c\x0a\x22\x40\x2e\x20\x63\x20\x23\x45\ -\x43\x42\x45\x34\x46\x22\x2c\x0a\x22\x23\x2e\x20\x63\x20\x23\x46\ -\x46\x41\x38\x34\x32\x22\x2c\x0a\x22\x24\x2e\x20\x63\x20\x23\x46\ -\x46\x42\x31\x34\x42\x22\x2c\x0a\x22\x25\x2e\x20\x63\x20\x23\x43\ -\x43\x44\x35\x35\x35\x22\x2c\x0a\x22\x26\x2e\x20\x63\x20\x23\x44\ -\x42\x43\x35\x34\x46\x22\x2c\x0a\x22\x2a\x2e\x20\x63\x20\x23\x38\ -\x34\x38\x34\x38\x34\x22\x2c\x0a\x22\x3d\x2e\x20\x63\x20\x23\x38\ -\x42\x38\x42\x38\x42\x22\x2c\x0a\x22\x2d\x2e\x20\x63\x20\x23\x38\ -\x36\x38\x35\x39\x37\x22\x2c\x0a\x22\x3b\x2e\x20\x63\x20\x23\x39\ -\x38\x39\x38\x39\x38\x22\x2c\x0a\x22\x3a\x2e\x20\x63\x20\x23\x38\ -\x33\x38\x33\x41\x41\x22\x2c\x0a\x22\x3e\x2e\x20\x63\x20\x23\x38\ -\x37\x38\x37\x42\x41\x22\x2c\x0a\x22\x2c\x2e\x20\x63\x20\x23\x38\ -\x46\x39\x44\x41\x41\x22\x2c\x0a\x22\x3c\x2e\x20\x63\x20\x23\x39\ -\x39\x39\x39\x42\x42\x22\x2c\x0a\x22\x31\x2e\x20\x63\x20\x23\x39\ -\x39\x41\x35\x42\x32\x22\x2c\x0a\x22\x32\x2e\x20\x63\x20\x23\x39\ -\x41\x41\x38\x42\x38\x22\x2c\x0a\x22\x33\x2e\x20\x63\x20\x67\x72\ -\x61\x79\x36\x34\x22\x2c\x0a\x22\x34\x2e\x20\x63\x20\x23\x41\x33\ -\x41\x34\x41\x46\x22\x2c\x0a\x22\x35\x2e\x20\x63\x20\x23\x41\x43\ -\x41\x43\x41\x43\x22\x2c\x0a\x22\x36\x2e\x20\x63\x20\x23\x41\x35\ -\x41\x39\x42\x36\x22\x2c\x0a\x22\x37\x2e\x20\x63\x20\x23\x41\x36\ -\x41\x43\x42\x46\x22\x2c\x0a\x22\x38\x2e\x20\x63\x20\x23\x41\x39\ -\x41\x39\x42\x39\x22\x2c\x0a\x22\x39\x2e\x20\x63\x20\x23\x41\x36\ -\x42\x30\x42\x39\x22\x2c\x0a\x22\x30\x2e\x20\x63\x20\x23\x42\x32\ -\x42\x32\x42\x32\x22\x2c\x0a\x22\x71\x2e\x20\x63\x20\x23\x42\x34\ -\x42\x34\x42\x41\x22\x2c\x0a\x22\x77\x2e\x20\x63\x20\x23\x42\x42\ -\x42\x42\x42\x42\x22\x2c\x0a\x22\x65\x2e\x20\x63\x20\x23\x38\x37\ -\x38\x38\x43\x36\x22\x2c\x0a\x22\x72\x2e\x20\x63\x20\x23\x38\x39\ -\x38\x42\x44\x37\x22\x2c\x0a\x22\x74\x2e\x20\x63\x20\x23\x39\x33\ -\x39\x34\x43\x36\x22\x2c\x0a\x22\x79\x2e\x20\x63\x20\x23\x39\x32\ -\x39\x46\x44\x32\x22\x2c\x0a\x22\x75\x2e\x20\x63\x20\x23\x39\x46\ -\x39\x46\x44\x32\x22\x2c\x0a\x22\x69\x2e\x20\x63\x20\x23\x39\x43\ -\x39\x43\x44\x41\x22\x2c\x0a\x22\x70\x2e\x20\x63\x20\x23\x39\x39\ -\x39\x39\x45\x35\x22\x2c\x0a\x22\x61\x2e\x20\x63\x20\x23\x39\x42\ -\x39\x42\x46\x45\x22\x2c\x0a\x22\x73\x2e\x20\x63\x20\x23\x38\x33\ -\x41\x30\x43\x36\x22\x2c\x0a\x22\x64\x2e\x20\x63\x20\x23\x39\x38\ -\x41\x41\x43\x39\x22\x2c\x0a\x22\x66\x2e\x20\x63\x20\x23\x39\x33\ -\x41\x37\x44\x41\x22\x2c\x0a\x22\x67\x2e\x20\x63\x20\x23\x39\x44\ -\x42\x32\x43\x43\x22\x2c\x0a\x22\x68\x2e\x20\x63\x20\x23\x38\x43\ -\x42\x37\x45\x37\x22\x2c\x0a\x22\x6a\x2e\x20\x63\x20\x23\x38\x37\ -\x42\x34\x46\x43\x22\x2c\x0a\x22\x6b\x2e\x20\x63\x20\x23\x39\x39\ -\x41\x36\x46\x46\x22\x2c\x0a\x22\x6c\x2e\x20\x63\x20\x23\x39\x35\ -\x42\x30\x45\x33\x22\x2c\x0a\x22\x7a\x2e\x20\x63\x20\x23\x39\x36\ -\x42\x44\x45\x33\x22\x2c\x0a\x22\x78\x2e\x20\x63\x20\x23\x39\x37\ -\x42\x39\x45\x43\x22\x2c\x0a\x22\x63\x2e\x20\x63\x20\x23\x39\x34\ -\x42\x42\x46\x46\x22\x2c\x0a\x22\x76\x2e\x20\x63\x20\x23\x41\x35\ -\x41\x35\x43\x39\x22\x2c\x0a\x22\x62\x2e\x20\x63\x20\x23\x41\x34\ -\x41\x38\x44\x42\x22\x2c\x0a\x22\x6e\x2e\x20\x63\x20\x23\x41\x43\ -\x41\x43\x44\x39\x22\x2c\x0a\x22\x6d\x2e\x20\x63\x20\x23\x41\x46\ -\x42\x33\x43\x31\x22\x2c\x0a\x22\x4d\x2e\x20\x63\x20\x23\x41\x44\ -\x42\x33\x43\x43\x22\x2c\x0a\x22\x4e\x2e\x20\x63\x20\x23\x41\x31\ -\x42\x39\x44\x38\x22\x2c\x0a\x22\x42\x2e\x20\x63\x20\x23\x42\x32\ -\x42\x32\x43\x39\x22\x2c\x0a\x22\x56\x2e\x20\x63\x20\x23\x42\x33\ -\x42\x34\x44\x31\x22\x2c\x0a\x22\x43\x2e\x20\x63\x20\x23\x42\x41\ -\x42\x41\x44\x33\x22\x2c\x0a\x22\x5a\x2e\x20\x63\x20\x23\x42\x45\ -\x42\x45\x44\x39\x22\x2c\x0a\x22\x41\x2e\x20\x63\x20\x23\x41\x43\ -\x41\x43\x45\x39\x22\x2c\x0a\x22\x53\x2e\x20\x63\x20\x23\x41\x37\ -\x41\x37\x46\x45\x22\x2c\x0a\x22\x44\x2e\x20\x63\x20\x23\x41\x35\ -\x42\x46\x45\x35\x22\x2c\x0a\x22\x46\x2e\x20\x63\x20\x23\x41\x39\ -\x42\x32\x45\x35\x22\x2c\x0a\x22\x47\x2e\x20\x63\x20\x23\x41\x44\ -\x42\x44\x46\x30\x22\x2c\x0a\x22\x48\x2e\x20\x63\x20\x23\x42\x33\ -\x41\x39\x46\x46\x22\x2c\x0a\x22\x4a\x2e\x20\x63\x20\x23\x42\x33\ -\x42\x33\x45\x36\x22\x2c\x0a\x22\x4b\x2e\x20\x63\x20\x23\x42\x42\ -\x42\x43\x45\x35\x22\x2c\x0a\x22\x4c\x2e\x20\x63\x20\x23\x42\x37\ -\x42\x36\x46\x45\x22\x2c\x0a\x22\x50\x2e\x20\x63\x20\x23\x41\x45\ -\x44\x44\x42\x46\x22\x2c\x0a\x22\x49\x2e\x20\x63\x20\x23\x39\x46\ -\x43\x35\x44\x46\x22\x2c\x0a\x22\x55\x2e\x20\x63\x20\x23\x38\x34\ -\x43\x35\x46\x46\x22\x2c\x0a\x22\x59\x2e\x20\x63\x20\x23\x38\x39\ -\x43\x37\x46\x46\x22\x2c\x0a\x22\x54\x2e\x20\x63\x20\x23\x38\x46\ -\x43\x42\x46\x43\x22\x2c\x0a\x22\x52\x2e\x20\x63\x20\x23\x39\x42\ -\x43\x42\x45\x42\x22\x2c\x0a\x22\x45\x2e\x20\x63\x20\x23\x39\x36\ -\x43\x32\x46\x39\x22\x2c\x0a\x22\x57\x2e\x20\x63\x20\x23\x39\x36\ -\x43\x46\x46\x36\x22\x2c\x0a\x22\x51\x2e\x20\x63\x20\x23\x39\x34\ -\x43\x41\x46\x46\x22\x2c\x0a\x22\x21\x2e\x20\x63\x20\x23\x39\x38\ -\x43\x32\x46\x35\x22\x2c\x0a\x22\x7e\x2e\x20\x63\x20\x23\x39\x39\ -\x43\x35\x46\x46\x22\x2c\x0a\x22\x5e\x2e\x20\x63\x20\x23\x39\x42\ -\x43\x43\x46\x46\x22\x2c\x0a\x22\x2f\x2e\x20\x63\x20\x23\x39\x39\ -\x44\x31\x46\x42\x22\x2c\x0a\x22\x28\x2e\x20\x63\x20\x23\x42\x36\ -\x43\x34\x43\x46\x22\x2c\x0a\x22\x29\x2e\x20\x63\x20\x23\x42\x42\ -\x43\x45\x44\x42\x22\x2c\x0a\x22\x5f\x2e\x20\x63\x20\x23\x41\x36\ -\x43\x34\x45\x43\x22\x2c\x0a\x22\x60\x2e\x20\x63\x20\x23\x41\x34\ -\x43\x43\x46\x46\x22\x2c\x0a\x22\x27\x2e\x20\x63\x20\x23\x41\x43\ -\x43\x31\x46\x34\x22\x2c\x0a\x22\x5d\x2e\x20\x63\x20\x23\x41\x42\ -\x43\x43\x46\x46\x22\x2c\x0a\x22\x5b\x2e\x20\x63\x20\x23\x41\x44\ -\x44\x32\x45\x43\x22\x2c\x0a\x22\x7b\x2e\x20\x63\x20\x23\x41\x36\ -\x44\x33\x46\x44\x22\x2c\x0a\x22\x7d\x2e\x20\x63\x20\x23\x42\x32\ -\x43\x44\x45\x36\x22\x2c\x0a\x22\x7c\x2e\x20\x63\x20\x23\x42\x30\ -\x43\x46\x45\x38\x22\x2c\x0a\x22\x20\x58\x20\x63\x20\x23\x42\x46\ -\x43\x32\x45\x42\x22\x2c\x0a\x22\x2e\x58\x20\x63\x20\x23\x42\x33\ -\x43\x43\x46\x46\x22\x2c\x0a\x22\x58\x58\x20\x63\x20\x23\x42\x42\ -\x43\x43\x46\x46\x22\x2c\x0a\x22\x6f\x58\x20\x63\x20\x23\x42\x32\ -\x44\x30\x45\x37\x22\x2c\x0a\x22\x4f\x58\x20\x63\x20\x23\x42\x36\ -\x44\x41\x46\x35\x22\x2c\x0a\x22\x2b\x58\x20\x63\x20\x23\x42\x32\ -\x44\x39\x46\x46\x22\x2c\x0a\x22\x40\x58\x20\x63\x20\x23\x42\x42\ -\x44\x44\x46\x46\x22\x2c\x0a\x22\x23\x58\x20\x63\x20\x23\x42\x45\ -\x45\x31\x46\x43\x22\x2c\x0a\x22\x24\x58\x20\x63\x20\x23\x44\x43\ -\x41\x46\x38\x31\x22\x2c\x0a\x22\x25\x58\x20\x63\x20\x23\x44\x31\ -\x42\x33\x39\x32\x22\x2c\x0a\x22\x26\x58\x20\x63\x20\x23\x43\x34\ -\x42\x42\x46\x46\x22\x2c\x0a\x22\x2a\x58\x20\x63\x20\x23\x43\x32\ -\x43\x30\x42\x39\x22\x2c\x0a\x22\x3d\x58\x20\x63\x20\x23\x44\x30\ -\x43\x45\x41\x37\x22\x2c\x0a\x22\x2d\x58\x20\x63\x20\x23\x45\x39\ -\x45\x37\x41\x37\x22\x2c\x0a\x22\x3b\x58\x20\x63\x20\x23\x43\x33\ -\x43\x33\x43\x34\x22\x2c\x0a\x22\x3a\x58\x20\x63\x20\x23\x43\x30\ -\x43\x30\x43\x44\x22\x2c\x0a\x22\x3e\x58\x20\x63\x20\x23\x43\x42\ -\x43\x42\x43\x42\x22\x2c\x0a\x22\x2c\x58\x20\x63\x20\x23\x43\x30\ -\x43\x30\x44\x36\x22\x2c\x0a\x22\x3c\x58\x20\x63\x20\x23\x43\x36\ -\x43\x36\x44\x39\x22\x2c\x0a\x22\x31\x58\x20\x63\x20\x23\x43\x46\ -\x43\x46\x44\x36\x22\x2c\x0a\x22\x32\x58\x20\x63\x20\x23\x43\x45\ -\x43\x45\x44\x44\x22\x2c\x0a\x22\x33\x58\x20\x63\x20\x4c\x69\x67\ -\x68\x74\x47\x72\x61\x79\x22\x2c\x0a\x22\x34\x58\x20\x63\x20\x23\ -\x44\x31\x44\x31\x44\x45\x22\x2c\x0a\x22\x35\x58\x20\x63\x20\x23\ -\x44\x35\x44\x38\x44\x39\x22\x2c\x0a\x22\x36\x58\x20\x63\x20\x67\ -\x72\x61\x79\x38\x36\x22\x2c\x0a\x22\x37\x58\x20\x63\x20\x23\x43\ -\x34\x43\x34\x45\x35\x22\x2c\x0a\x22\x38\x58\x20\x63\x20\x23\x43\ -\x32\x43\x32\x45\x43\x22\x2c\x0a\x22\x39\x58\x20\x63\x20\x23\x43\ -\x38\x43\x38\x45\x36\x22\x2c\x0a\x22\x30\x58\x20\x63\x20\x23\x43\ -\x35\x43\x35\x46\x32\x22\x2c\x0a\x22\x71\x58\x20\x63\x20\x23\x43\ -\x34\x43\x34\x46\x45\x22\x2c\x0a\x22\x77\x58\x20\x63\x20\x23\x43\ -\x33\x43\x43\x46\x46\x22\x2c\x0a\x22\x65\x58\x20\x63\x20\x23\x43\ -\x44\x43\x34\x46\x46\x22\x2c\x0a\x22\x72\x58\x20\x63\x20\x23\x43\ -\x44\x43\x46\x46\x36\x22\x2c\x0a\x22\x74\x58\x20\x63\x20\x23\x43\ -\x42\x43\x42\x46\x45\x22\x2c\x0a\x22\x79\x58\x20\x63\x20\x23\x43\ -\x39\x44\x43\x45\x43\x22\x2c\x0a\x22\x75\x58\x20\x63\x20\x23\x44\ -\x32\x43\x43\x46\x44\x22\x2c\x0a\x22\x69\x58\x20\x63\x20\x23\x44\ -\x33\x44\x33\x45\x31\x22\x2c\x0a\x22\x70\x58\x20\x63\x20\x23\x44\ -\x36\x44\x37\x45\x45\x22\x2c\x0a\x22\x61\x58\x20\x63\x20\x23\x44\ -\x36\x44\x44\x45\x34\x22\x2c\x0a\x22\x73\x58\x20\x63\x20\x23\x44\ -\x36\x44\x46\x45\x38\x22\x2c\x0a\x22\x64\x58\x20\x63\x20\x23\x44\ -\x41\x44\x43\x45\x34\x22\x2c\x0a\x22\x66\x58\x20\x63\x20\x23\x44\ -\x38\x44\x43\x45\x39\x22\x2c\x0a\x22\x67\x58\x20\x63\x20\x23\x44\ -\x31\x44\x32\x46\x32\x22\x2c\x0a\x22\x68\x58\x20\x63\x20\x23\x44\ -\x33\x44\x33\x46\x46\x22\x2c\x0a\x22\x6a\x58\x20\x63\x20\x23\x44\ -\x42\x44\x42\x46\x46\x22\x2c\x0a\x22\x6b\x58\x20\x63\x20\x23\x43\ -\x44\x45\x30\x45\x44\x22\x2c\x0a\x22\x6c\x58\x20\x63\x20\x23\x43\ -\x38\x45\x32\x46\x42\x22\x2c\x0a\x22\x7a\x58\x20\x63\x20\x23\x44\ -\x35\x45\x30\x45\x42\x22\x2c\x0a\x22\x78\x58\x20\x63\x20\x23\x44\ -\x44\x45\x33\x45\x39\x22\x2c\x0a\x22\x63\x58\x20\x63\x20\x23\x44\ -\x36\x45\x39\x46\x43\x22\x2c\x0a\x22\x76\x58\x20\x63\x20\x23\x45\ -\x41\x43\x35\x46\x46\x22\x2c\x0a\x22\x62\x58\x20\x63\x20\x23\x45\ -\x45\x44\x37\x46\x46\x22\x2c\x0a\x22\x6e\x58\x20\x63\x20\x23\x46\ -\x44\x43\x43\x46\x46\x22\x2c\x0a\x22\x6d\x58\x20\x63\x20\x23\x46\ -\x41\x44\x38\x46\x46\x22\x2c\x0a\x22\x4d\x58\x20\x63\x20\x67\x72\ -\x61\x79\x38\x39\x22\x2c\x0a\x22\x4e\x58\x20\x63\x20\x23\x45\x32\ -\x45\x34\x45\x44\x22\x2c\x0a\x22\x42\x58\x20\x63\x20\x23\x45\x34\ -\x45\x38\x45\x43\x22\x2c\x0a\x22\x56\x58\x20\x63\x20\x67\x72\x61\ -\x79\x39\x33\x22\x2c\x0a\x22\x43\x58\x20\x63\x20\x23\x45\x33\x45\ -\x33\x46\x33\x22\x2c\x0a\x22\x5a\x58\x20\x63\x20\x23\x45\x33\x45\ -\x33\x46\x45\x22\x2c\x0a\x22\x41\x58\x20\x63\x20\x23\x45\x33\x45\ -\x44\x46\x33\x22\x2c\x0a\x22\x53\x58\x20\x63\x20\x23\x45\x42\x45\ -\x44\x46\x33\x22\x2c\x0a\x22\x44\x58\x20\x63\x20\x23\x45\x42\x45\ -\x42\x46\x46\x22\x2c\x0a\x22\x46\x58\x20\x63\x20\x23\x45\x39\x46\ -\x34\x46\x45\x22\x2c\x0a\x22\x47\x58\x20\x63\x20\x23\x46\x44\x45\ -\x38\x46\x45\x22\x2c\x0a\x22\x48\x58\x20\x63\x20\x23\x46\x33\x46\ -\x33\x46\x33\x22\x2c\x0a\x22\x4a\x58\x20\x63\x20\x23\x46\x34\x46\ -\x34\x46\x43\x22\x2c\x0a\x22\x4b\x58\x20\x63\x20\x23\x46\x33\x46\ -\x38\x46\x46\x22\x2c\x0a\x22\x4c\x58\x20\x63\x20\x23\x46\x45\x46\ -\x31\x46\x46\x22\x2c\x0a\x22\x50\x58\x20\x63\x20\x23\x46\x44\x46\ -\x44\x46\x45\x22\x2c\x0a\x22\x49\x58\x20\x63\x20\x62\x6c\x61\x63\ -\x6b\x22\x2c\x0a\x22\x55\x58\x20\x63\x20\x62\x6c\x61\x63\x6b\x22\ -\x2c\x0a\x22\x59\x58\x20\x63\x20\x4e\x6f\x6e\x65\x22\x2c\x0a\x2f\ -\x2a\x20\x70\x69\x78\x65\x6c\x73\x20\x2a\x2f\x0a\x22\x59\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x35\x58\x33\x58\x3e\x58\x77\x2e\x3e\ -\x58\x4d\x58\x59\x58\x59\x58\x42\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\ -\x22\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x35\x58\x33\x58\x3e\x58\x77\x2e\x77\x2e\x30\ -\x2e\x35\x2e\x6d\x2e\x36\x2e\x37\x2e\x4d\x2e\x4d\x2e\x4b\x2e\x4b\ -\x2e\x38\x58\x38\x2e\x30\x2e\x36\x58\x3e\x58\x77\x2e\x3b\x58\x77\ -\x2e\x30\x2e\x3b\x58\x3e\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x77\x2e\x35\x2e\x33\ -\x2e\x39\x2e\x31\x2e\x32\x2e\x67\x2e\x67\x2e\x4e\x2e\x44\x2e\x44\ -\x2e\x5d\x2e\x2e\x58\x2e\x58\x2e\x58\x58\x58\x58\x58\x58\x58\x77\ -\x58\x77\x58\x77\x58\x74\x58\x56\x2e\x3a\x20\x3e\x58\x35\x2e\x4b\ -\x58\x50\x58\x50\x58\x50\x58\x4d\x58\x33\x58\x2a\x58\x35\x2e\x2a\ -\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x3b\x58\x3e\x58\x33\x2e\x52\ -\x20\x5e\x20\x55\x2e\x51\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x60\x2e\x60\ -\x2e\x60\x2e\x5d\x2e\x5d\x2e\x5d\x2e\x2e\x58\x2e\x58\x2e\x58\x58\ -\x58\x58\x58\x58\x58\x77\x58\x77\x58\x77\x58\x20\x58\x2d\x20\x35\ -\x2e\x34\x58\x4a\x58\x4b\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\ -\x58\x71\x2e\x2a\x2e\x2a\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x71\x2e\x35\ -\x58\x71\x2e\x48\x20\x45\x20\x5e\x20\x55\x2e\x51\x2e\x5e\x2e\x5e\ -\x2e\x5e\x2e\x60\x2e\x60\x2e\x60\x2e\x5d\x2e\x5d\x2e\x5d\x2e\x2e\ -\x58\x2e\x58\x2e\x58\x58\x58\x58\x58\x58\x58\x77\x58\x77\x58\x77\ -\x58\x2a\x2e\x34\x2e\x5a\x58\x44\x58\x4a\x58\x4a\x58\x50\x58\x50\ -\x58\x50\x58\x48\x58\x3a\x20\x26\x20\x77\x2e\x42\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\ -\x22\x33\x58\x33\x58\x50\x58\x4b\x58\x23\x58\x2f\x2e\x5e\x20\x55\ -\x2e\x51\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x60\x2e\x60\x2e\x60\x2e\x5d\ -\x2e\x5d\x2e\x5d\x2e\x2e\x58\x2e\x58\x2e\x58\x58\x58\x58\x58\x58\ -\x58\x77\x58\x77\x58\x34\x2e\x39\x58\x6a\x58\x5a\x58\x44\x58\x44\ -\x58\x4a\x58\x50\x58\x50\x58\x3e\x58\x6f\x20\x2a\x2e\x33\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x22\x2c\x0a\x22\x4d\x58\x30\x2e\x48\x58\x48\x58\x48\x58\x48\ -\x58\x54\x2e\x5e\x20\x55\x2e\x51\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x60\ -\x2e\x60\x2e\x60\x2e\x5d\x2e\x5d\x2e\x5d\x2e\x2e\x58\x2e\x58\x2e\ -\x58\x58\x58\x58\x58\x58\x58\x77\x58\x4b\x2e\x68\x58\x68\x58\x6a\ -\x58\x5a\x58\x44\x58\x44\x58\x4a\x58\x50\x58\x3d\x2e\x6f\x20\x35\ -\x2e\x4d\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x77\x2e\x4d\x58\x59\ -\x58\x59\x58\x59\x58\x4f\x58\x45\x20\x5e\x20\x55\x2e\x51\x2e\x5e\ -\x2e\x5e\x2e\x5e\x2e\x60\x2e\x60\x2e\x60\x2e\x5d\x2e\x5d\x2e\x5d\ -\x2e\x2e\x58\x27\x2e\x47\x2e\x46\x2e\x46\x2e\x62\x2e\x66\x58\x5a\ -\x58\x5a\x58\x6a\x58\x6a\x58\x5a\x58\x44\x58\x44\x58\x31\x58\x25\ -\x20\x2d\x20\x3e\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x36\ -\x58\x71\x2e\x42\x58\x42\x58\x42\x58\x78\x58\x54\x20\x45\x20\x5e\ -\x20\x55\x2e\x51\x2e\x5e\x2e\x21\x2e\x78\x2e\x6c\x2e\x66\x2e\x79\ -\x2e\x74\x2e\x65\x2e\x3e\x2e\x74\x2e\x74\x2e\x74\x2e\x74\x2e\x74\ -\x2e\x69\x58\x48\x58\x50\x58\x50\x58\x4b\x58\x4a\x58\x44\x58\x44\ -\x58\x35\x2e\x2e\x20\x3b\x2e\x36\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\ -\x22\x59\x58\x42\x58\x33\x2e\x4d\x58\x4d\x58\x4d\x58\x4d\x58\x68\ -\x2e\x50\x20\x49\x20\x5a\x20\x5a\x20\x65\x20\x72\x20\x72\x20\x72\ -\x20\x72\x20\x3e\x2e\x3e\x2e\x3e\x2e\x3e\x2e\x3e\x2e\x74\x2e\x74\ -\x2e\x74\x2e\x74\x2e\x32\x58\x42\x58\x48\x58\x48\x58\x4a\x58\x59\ -\x58\x59\x58\x4d\x58\x3b\x2e\x25\x20\x77\x2e\x42\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x77\x2e\x3b\x58\x36\x58\x36\ -\x58\x36\x58\x3a\x58\x30\x20\x30\x20\x39\x20\x65\x20\x65\x20\x65\ -\x20\x72\x20\x72\x20\x72\x20\x72\x20\x3e\x2e\x3e\x2e\x3e\x2e\x3e\ -\x2e\x3e\x2e\x76\x2e\x56\x2e\x43\x2e\x64\x58\x4d\x58\x4d\x58\x36\ -\x58\x36\x58\x36\x58\x36\x58\x35\x58\x33\x58\x33\x2e\x33\x2e\x36\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x3b\ -\x58\x59\x58\x36\x58\x35\x58\x35\x58\x65\x20\x30\x20\x30\x20\x39\ -\x20\x65\x20\x65\x20\x65\x20\x72\x20\x3e\x2e\x3c\x2e\x43\x2e\x2c\ -\x58\x69\x58\x42\x58\x59\x58\x42\x58\x4d\x58\x4d\x58\x4d\x58\x4d\ -\x58\x36\x58\x36\x58\x36\x58\x36\x58\x35\x58\x33\x58\x33\x58\x33\ -\x58\x35\x2e\x3b\x2e\x35\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\ -\x58\x3e\x58\x3b\x58\x50\x58\x50\x58\x59\x58\x33\x58\x3c\x2e\x30\ -\x20\x3c\x2e\x3c\x2e\x56\x2e\x32\x58\x69\x58\x48\x58\x48\x58\x48\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x42\x58\x4d\x58\x4d\x58\x4d\ -\x58\x4d\x58\x36\x58\x36\x58\x36\x58\x36\x58\x35\x58\x33\x58\x33\ -\x58\x33\x58\x33\x58\x3e\x58\x30\x2e\x3d\x2e\x3e\x58\x42\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\ -\x22\x59\x58\x59\x58\x3e\x58\x3b\x58\x50\x58\x50\x58\x50\x58\x4a\ -\x58\x79\x58\x4b\x58\x50\x58\x50\x58\x4a\x58\x48\x58\x48\x58\x48\ -\x58\x48\x58\x59\x58\x59\x58\x59\x58\x59\x58\x42\x58\x4d\x58\x4d\ -\x58\x4d\x58\x4d\x58\x36\x58\x36\x58\x36\x58\x36\x58\x35\x58\x29\ -\x2e\x49\x2e\x59\x20\x33\x2e\x3d\x2e\x26\x20\x26\x20\x2d\x20\x33\ -\x2e\x36\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x3b\x58\x36\x58\x4d\ -\x58\x4a\x58\x48\x58\x6c\x58\x4c\x20\x50\x58\x4a\x58\x48\x58\x48\ -\x58\x48\x58\x48\x58\x59\x58\x59\x58\x59\x58\x59\x58\x42\x58\x4d\ -\x58\x4d\x58\x4d\x58\x4d\x58\x6f\x58\x52\x2e\x59\x20\x47\x20\x42\ -\x20\x62\x20\x6e\x20\x6d\x20\x4d\x20\x2d\x20\x2e\x20\x2d\x20\x3b\ -\x2e\x33\x2e\x3b\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x3b\ -\x58\x33\x58\x33\x2e\x30\x2e\x4d\x58\x6c\x58\x42\x20\x29\x20\x48\ -\x58\x48\x58\x48\x58\x48\x58\x59\x58\x59\x58\x59\x58\x59\x58\x5b\ -\x2e\x52\x2e\x7e\x20\x46\x20\x4d\x20\x62\x20\x6e\x20\x4d\x20\x4d\ -\x20\x4e\x20\x53\x20\x34\x20\x33\x20\x36\x20\x36\x20\x35\x20\x35\ -\x20\x2d\x2e\x71\x2e\x35\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\ -\x58\x3e\x58\x3b\x58\x36\x58\x36\x58\x3b\x58\x3b\x58\x6c\x58\x46\ -\x20\x4d\x20\x2f\x2e\x41\x58\x4f\x58\x57\x2e\x7e\x20\x42\x20\x6d\ -\x20\x6e\x20\x6e\x20\x4d\x20\x42\x20\x42\x20\x46\x20\x46\x20\x46\ -\x20\x44\x20\x33\x20\x36\x20\x3c\x2e\x56\x2e\x39\x58\x37\x58\x67\ -\x58\x4b\x2e\x6e\x2e\x74\x2e\x30\x20\x39\x20\x6d\x2e\x4d\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\ -\x22\x59\x58\x59\x58\x3e\x58\x2a\x58\x33\x58\x33\x2e\x30\x2e\x42\ -\x58\x6b\x58\x4b\x20\x48\x20\x6e\x20\x6e\x20\x6d\x20\x4d\x20\x42\ -\x20\x46\x20\x4b\x20\x4b\x20\x4b\x20\x4b\x20\x4b\x20\x4b\x20\x4b\ -\x20\x4a\x20\x77\x20\x36\x20\x42\x2e\x43\x58\x44\x58\x44\x58\x5a\ -\x58\x5a\x58\x6a\x58\x68\x58\x68\x58\x74\x58\x71\x58\x74\x2e\x30\ -\x20\x3a\x2e\x33\x58\x42\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x77\x2e\x79\x58\x78\ -\x58\x3b\x58\x33\x58\x6b\x58\x54\x20\x54\x20\x54\x20\x54\x20\x54\ -\x20\x54\x20\x54\x20\x54\x20\x54\x20\x54\x20\x54\x20\x54\x20\x54\ -\x20\x54\x20\x55\x20\x71\x20\x3a\x2e\x53\x58\x50\x58\x44\x58\x44\ -\x58\x5a\x58\x5a\x58\x6a\x58\x68\x58\x68\x58\x74\x58\x74\x58\x71\ -\x58\x26\x58\x41\x2e\x65\x20\x37\x20\x3b\x58\x4d\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x77\ -\x2e\x57\x20\x3c\x20\x7a\x2e\x59\x58\x6b\x58\x51\x20\x51\x20\x51\ -\x20\x51\x20\x51\x20\x51\x20\x51\x20\x51\x20\x51\x20\x51\x20\x51\ -\x20\x51\x20\x51\x20\x55\x20\x36\x20\x3c\x2e\x50\x58\x50\x58\x50\ -\x58\x44\x58\x5a\x58\x5a\x58\x6a\x58\x68\x58\x68\x58\x74\x58\x74\ -\x58\x71\x58\x26\x58\x4c\x2e\x4c\x2e\x53\x2e\x65\x20\x37\x20\x2a\ -\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\ -\x58\x3e\x58\x77\x2e\x57\x20\x2c\x20\x3e\x20\x7d\x2e\x6b\x58\x28\ -\x20\x28\x20\x28\x20\x28\x20\x28\x20\x28\x20\x28\x20\x28\x20\x28\ -\x20\x28\x20\x28\x20\x28\x20\x6a\x2e\x30\x20\x3c\x2e\x50\x58\x50\ -\x58\x50\x58\x50\x58\x4a\x58\x5a\x58\x6a\x58\x68\x58\x68\x58\x74\ -\x58\x74\x58\x71\x58\x26\x58\x4c\x2e\x4c\x2e\x48\x2e\x53\x2e\x61\ -\x2e\x65\x20\x38\x20\x3e\x58\x42\x58\x59\x58\x59\x58\x22\x2c\x0a\ -\x22\x59\x58\x59\x58\x3e\x58\x77\x2e\x57\x20\x31\x20\x2c\x20\x7d\ -\x2e\x7a\x58\x59\x2e\x59\x2e\x59\x2e\x59\x2e\x59\x2e\x59\x2e\x59\ -\x2e\x59\x2e\x59\x2e\x59\x2e\x59\x2e\x63\x2e\x65\x20\x3e\x2e\x50\ -\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x6a\x58\x68\x58\x68\ -\x58\x74\x58\x74\x58\x71\x58\x26\x58\x4c\x2e\x4c\x2e\x48\x2e\x53\ -\x2e\x61\x2e\x61\x2e\x70\x2e\x30\x20\x2d\x2e\x33\x58\x59\x58\x59\ -\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x77\x2e\x7e\x20\x76\ -\x20\x31\x20\x7c\x2e\x7a\x58\x51\x2e\x51\x2e\x51\x2e\x51\x2e\x51\ -\x2e\x51\x2e\x51\x2e\x51\x2e\x51\x2e\x51\x2e\x63\x2e\x72\x2e\x39\ -\x20\x4a\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x5a\ -\x58\x68\x58\x74\x58\x74\x58\x71\x58\x26\x58\x4c\x2e\x4c\x2e\x48\ -\x2e\x53\x2e\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x65\x2e\x35\x20\x35\ -\x2e\x4d\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x77\ -\x2e\x2f\x20\x62\x20\x76\x20\x7c\x2e\x7a\x58\x5e\x2e\x5e\x2e\x5e\ -\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x7e\x2e\x6b\ -\x2e\x30\x20\x3c\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\ -\x58\x50\x58\x4b\x58\x74\x58\x74\x58\x71\x58\x26\x58\x4c\x2e\x4c\ -\x2e\x48\x2e\x53\x2e\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x53\x2e\x53\ -\x2e\x30\x20\x38\x20\x3e\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\ -\x58\x3e\x58\x71\x2e\x7b\x2e\x62\x20\x62\x20\x5b\x2e\x7a\x58\x5e\ -\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x28\x2e\x2a\x58\x25\ -\x58\x7d\x20\x60\x20\x65\x20\x50\x58\x50\x58\x50\x58\x50\x58\x50\ -\x58\x50\x58\x50\x58\x50\x58\x50\x58\x68\x58\x65\x58\x65\x58\x26\ -\x58\x4c\x2e\x48\x2e\x53\x2e\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x53\ -\x2e\x53\x2e\x48\x2e\x3e\x2e\x32\x20\x30\x2e\x4d\x58\x22\x2c\x0a\ -\x22\x59\x58\x59\x58\x3e\x58\x30\x2e\x59\x58\x6b\x58\x42\x20\x5b\ -\x2e\x7a\x58\x7b\x2e\x7b\x2e\x7b\x2e\x24\x58\x2b\x2e\x4f\x2e\x23\ -\x2e\x23\x2e\x4f\x2e\x5b\x20\x3d\x20\x56\x2e\x50\x58\x50\x58\x50\ -\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x6d\x58\x6e\ -\x58\x6e\x58\x6d\x58\x6d\x58\x26\x58\x61\x2e\x61\x2e\x61\x2e\x61\ -\x2e\x53\x2e\x53\x2e\x48\x2e\x4c\x2e\x69\x2e\x35\x20\x3b\x2e\x36\ -\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x30\x2e\x59\x58\x42\ -\x58\x42\x58\x4d\x58\x7a\x58\x7b\x2e\x7b\x2e\x7b\x2e\x4f\x2e\x4f\ -\x2e\x23\x2e\x23\x2e\x24\x2e\x6f\x2e\x7b\x20\x36\x20\x71\x58\x68\ -\x58\x44\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x47\ -\x58\x6d\x58\x6e\x58\x76\x58\x62\x58\x47\x58\x4c\x58\x26\x58\x61\ -\x2e\x61\x2e\x53\x2e\x53\x2e\x48\x2e\x4c\x2e\x4c\x2e\x4c\x2e\x36\ -\x20\x2d\x20\x3e\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x30\ -\x2e\x42\x58\x42\x58\x4d\x58\x4d\x58\x7a\x58\x7b\x2e\x7b\x2e\x7b\ -\x2e\x4f\x2e\x23\x2e\x23\x2e\x24\x2e\x24\x2e\x6f\x2e\x27\x20\x65\ -\x20\x74\x58\x74\x58\x74\x58\x74\x58\x6a\x58\x44\x58\x50\x58\x50\ -\x58\x4c\x58\x47\x58\x4c\x58\x30\x58\x65\x2e\x70\x2e\x26\x58\x4c\ -\x58\x4a\x58\x53\x2e\x53\x2e\x53\x2e\x48\x2e\x4c\x2e\x4c\x2e\x71\ -\x58\x71\x58\x39\x20\x2a\x20\x3b\x58\x22\x2c\x0a\x22\x59\x58\x59\ -\x58\x3e\x58\x30\x2e\x42\x58\x4d\x58\x4d\x58\x4d\x58\x7a\x58\x2b\ -\x58\x2b\x58\x2b\x58\x58\x2e\x25\x2e\x40\x2e\x24\x2e\x24\x2e\x6f\ -\x2e\x5d\x20\x74\x2e\x74\x58\x74\x58\x74\x58\x74\x58\x74\x58\x74\ -\x58\x75\x58\x44\x58\x4c\x58\x4c\x58\x3c\x58\x30\x20\x5a\x20\x30\ -\x20\x65\x2e\x75\x58\x50\x58\x71\x58\x53\x2e\x48\x2e\x4c\x2e\x4c\ -\x2e\x71\x58\x71\x58\x74\x58\x43\x20\x2b\x20\x30\x2e\x22\x2c\x0a\ -\x22\x59\x58\x59\x58\x3e\x58\x30\x2e\x4d\x58\x4d\x58\x4d\x58\x4d\ -\x58\x73\x58\x2b\x58\x2b\x58\x2b\x58\x20\x2e\x20\x2e\x20\x2e\x2e\ -\x2e\x26\x2e\x6f\x2e\x5f\x20\x75\x2e\x74\x58\x74\x58\x74\x58\x74\ -\x58\x74\x58\x74\x58\x74\x58\x44\x58\x4c\x58\x75\x58\x39\x20\x3d\ -\x58\x2b\x58\x5f\x2e\x36\x20\x4c\x2e\x50\x58\x68\x58\x48\x2e\x4c\ -\x2e\x71\x58\x71\x58\x74\x58\x72\x58\x67\x58\x3a\x2e\x2b\x20\x35\ -\x2e\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x35\x2e\x4d\x58\x4d\ -\x58\x4d\x58\x4d\x58\x73\x58\x40\x58\x40\x58\x40\x58\x20\x2e\x20\ -\x2e\x20\x2e\x20\x2e\x6c\x20\x7c\x20\x5f\x20\x4a\x2e\x74\x58\x74\ -\x58\x74\x58\x74\x58\x74\x58\x74\x58\x74\x58\x4a\x58\x4c\x58\x41\ -\x2e\x2d\x2e\x2d\x58\x40\x58\x40\x58\x36\x20\x70\x58\x50\x58\x53\ -\x58\x66\x58\x66\x58\x66\x58\x66\x58\x66\x58\x66\x58\x66\x58\x3a\ -\x2e\x2b\x20\x35\x2e\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x35\ -\x2e\x4d\x58\x4d\x58\x4d\x58\x4d\x58\x61\x58\x40\x58\x40\x58\x40\ -\x58\x63\x20\x63\x20\x63\x20\x63\x20\x67\x20\x74\x20\x24\x20\x4b\ -\x2e\x68\x58\x68\x58\x74\x58\x74\x58\x71\x58\x26\x58\x4c\x2e\x44\ -\x58\x4c\x58\x70\x2e\x37\x20\x2d\x58\x40\x58\x64\x2e\x39\x20\x53\ -\x58\x50\x58\x48\x58\x4e\x58\x4e\x58\x4e\x58\x4e\x58\x4e\x58\x4e\ -\x58\x4e\x58\x3a\x2e\x2b\x20\x35\x2e\x22\x2c\x0a\x22\x59\x58\x59\ -\x58\x3e\x58\x35\x2e\x4d\x58\x4d\x58\x4d\x58\x36\x58\x61\x58\x23\ -\x58\x23\x58\x23\x58\x78\x20\x78\x20\x78\x20\x78\x20\x64\x20\x74\ -\x20\x24\x20\x4b\x2e\x68\x58\x74\x58\x74\x58\x71\x58\x26\x58\x4c\ -\x2e\x4c\x2e\x5a\x58\x4c\x58\x26\x58\x72\x20\x39\x20\x43\x20\x36\ -\x20\x3c\x58\x4c\x58\x50\x58\x4a\x58\x53\x58\x53\x58\x53\x58\x53\ -\x58\x53\x58\x53\x58\x53\x58\x36\x20\x6f\x20\x30\x2e\x22\x2c\x0a\ -\x22\x59\x58\x59\x58\x3e\x58\x35\x2e\x4d\x58\x4d\x58\x36\x58\x36\ -\x58\x61\x58\x6c\x58\x6c\x58\x6c\x58\x7a\x20\x7a\x20\x7a\x20\x7a\ -\x20\x64\x20\x74\x20\x23\x20\x75\x2e\x74\x58\x74\x58\x71\x58\x26\ -\x58\x4c\x2e\x4c\x2e\x48\x2e\x26\x58\x4c\x58\x6d\x58\x48\x2e\x72\ -\x2e\x72\x2e\x20\x58\x47\x58\x4c\x58\x50\x58\x50\x58\x50\x58\x50\ -\x58\x4a\x58\x4a\x58\x4a\x58\x4a\x58\x69\x58\x35\x20\x25\x20\x3b\ -\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x35\x2e\x4d\x58\x36\ -\x58\x36\x58\x36\x58\x61\x58\x6c\x58\x6c\x58\x6c\x58\x6b\x20\x6b\ -\x20\x6b\x20\x6b\x20\x61\x20\x74\x20\x66\x20\x3e\x2e\x74\x58\x71\ -\x58\x26\x58\x4c\x2e\x4c\x2e\x48\x2e\x53\x2e\x61\x2e\x75\x58\x47\ -\x58\x6d\x58\x76\x58\x76\x58\x6d\x58\x47\x58\x4c\x58\x50\x58\x50\ -\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x76\x2e\x40\ -\x20\x2d\x20\x3e\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3b\x58\x35\ -\x2e\x36\x58\x36\x58\x36\x58\x36\x58\x61\x58\x63\x58\x63\x58\x63\ -\x58\x67\x20\x67\x20\x67\x20\x67\x20\x70\x20\x74\x20\x75\x20\x65\ -\x20\x71\x58\x26\x58\x4c\x2e\x4c\x2e\x48\x2e\x53\x2e\x61\x2e\x61\ -\x2e\x61\x2e\x26\x58\x62\x58\x6e\x58\x6e\x58\x6d\x58\x62\x58\x50\ -\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\ -\x58\x65\x20\x58\x20\x3d\x2e\x35\x58\x22\x2c\x0a\x22\x59\x58\x59\ -\x58\x3b\x58\x33\x2e\x36\x58\x36\x58\x36\x58\x36\x58\x61\x58\x63\ -\x58\x63\x58\x63\x58\x64\x20\x64\x20\x64\x20\x64\x20\x70\x20\x74\ -\x20\x74\x20\x35\x20\x41\x2e\x4c\x2e\x4c\x2e\x48\x2e\x53\x2e\x61\ -\x2e\x61\x2e\x61\x2e\x61\x2e\x53\x2e\x53\x2e\x4c\x2e\x26\x58\x4c\ -\x2e\x71\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\ -\x58\x50\x58\x3c\x58\x35\x20\x6f\x20\x35\x2e\x4d\x58\x22\x2c\x0a\ -\x22\x59\x58\x59\x58\x3b\x58\x33\x2e\x3b\x58\x33\x58\x36\x58\x35\ -\x58\x73\x58\x63\x58\x63\x58\x63\x58\x61\x20\x61\x20\x61\x20\x61\ -\x20\x70\x20\x74\x20\x74\x20\x23\x20\x3e\x2e\x4c\x2e\x48\x2e\x53\ -\x2e\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x53\x2e\x53\x2e\x48\x2e\x4c\ -\x2e\x4c\x2e\x71\x58\x71\x58\x44\x58\x50\x58\x50\x58\x50\x58\x50\ -\x58\x50\x58\x50\x58\x50\x58\x65\x20\x4f\x20\x2d\x20\x3e\x58\x59\ -\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3b\x58\x33\x2e\x3b\x58\x3b\ -\x2e\x30\x2e\x33\x58\x78\x58\x63\x58\x63\x58\x63\x58\x69\x20\x69\ -\x20\x69\x20\x69\x20\x69\x20\x74\x20\x74\x20\x79\x20\x36\x20\x53\ -\x2e\x53\x2e\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x53\x2e\x53\x2e\x48\ -\x2e\x4c\x2e\x4c\x2e\x71\x58\x71\x58\x74\x58\x6a\x58\x50\x58\x50\ -\x58\x50\x58\x50\x58\x50\x58\x50\x58\x42\x2e\x32\x20\x2e\x20\x33\ -\x2e\x36\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3b\x58\x33\ -\x2e\x3e\x58\x3e\x58\x30\x2e\x77\x2e\x78\x58\x46\x58\x46\x58\x46\ -\x58\x74\x20\x74\x20\x74\x20\x74\x20\x73\x20\x6a\x20\x56\x20\x41\ -\x20\x49\x20\x72\x20\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x53\x2e\x53\ -\x2e\x48\x2e\x4c\x2e\x4c\x2e\x71\x58\x71\x58\x74\x58\x68\x58\x6a\ -\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x64\x58\x36\x20\x20\ -\x20\x3a\x20\x3e\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\ -\x58\x3b\x58\x33\x2e\x30\x2e\x33\x2e\x3b\x58\x33\x58\x78\x58\x46\ -\x58\x46\x58\x46\x58\x68\x20\x21\x20\x50\x2e\x53\x58\x46\x58\x6c\ -\x58\x7e\x2e\x7e\x2e\x45\x2e\x30\x20\x65\x2e\x61\x2e\x61\x2e\x53\ -\x2e\x53\x2e\x48\x2e\x4c\x2e\x4c\x2e\x71\x58\x71\x58\x74\x58\x68\ -\x58\x6a\x58\x6a\x58\x44\x58\x50\x58\x50\x58\x50\x58\x4e\x58\x39\ -\x20\x4f\x20\x26\x20\x30\x2e\x4d\x58\x59\x58\x59\x58\x22\x2c\x0a\ -\x22\x59\x58\x59\x58\x3b\x58\x33\x2e\x35\x58\x77\x2e\x3b\x2e\x3b\ -\x58\x78\x58\x46\x58\x46\x58\x46\x58\x46\x58\x46\x58\x46\x58\x46\ -\x58\x46\x58\x46\x58\x5e\x2e\x5e\x2e\x5e\x2e\x68\x2e\x30\x20\x72\ -\x2e\x53\x2e\x53\x2e\x48\x2e\x4c\x2e\x4c\x2e\x71\x58\x71\x58\x74\ -\x58\x68\x58\x6a\x58\x6a\x58\x5a\x58\x44\x58\x50\x58\x50\x58\x4e\ -\x58\x39\x20\x4f\x20\x25\x20\x33\x2e\x36\x58\x59\x58\x59\x58\x59\ -\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x33\x58\x2a\x2e\x3b\x58\x33\ -\x58\x3e\x58\x3e\x58\x78\x58\x4b\x58\x4b\x58\x4b\x58\x4b\x58\x4b\ -\x58\x4b\x58\x4b\x58\x4b\x58\x4b\x58\x63\x58\x5e\x2e\x5e\x2e\x5e\ -\x2e\x73\x2e\x36\x20\x72\x20\x53\x2e\x4c\x2e\x4c\x2e\x71\x58\x71\ -\x58\x74\x58\x68\x58\x6a\x58\x6a\x58\x5a\x58\x44\x58\x44\x58\x50\ -\x58\x42\x2e\x36\x20\x4f\x20\x25\x20\x33\x2e\x33\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x42\x58\x30\ -\x2e\x2d\x20\x30\x2e\x33\x58\x33\x58\x4d\x58\x4b\x58\x4b\x58\x4b\ -\x58\x4b\x58\x4b\x58\x4b\x58\x4b\x58\x4b\x58\x42\x58\x3b\x58\x2c\ -\x2e\x38\x20\x25\x20\x6f\x20\x58\x20\x32\x20\x30\x20\x69\x2e\x71\ -\x58\x71\x58\x74\x58\x68\x58\x6a\x58\x6a\x58\x5a\x58\x44\x58\x43\ -\x58\x5a\x2e\x65\x20\x32\x20\x20\x20\x25\x20\x33\x2e\x33\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\ -\x58\x59\x58\x36\x58\x35\x2e\x26\x20\x3b\x2e\x3e\x58\x4d\x58\x50\ -\x58\x50\x58\x50\x58\x50\x58\x35\x58\x77\x2e\x3b\x2e\x3a\x20\x25\ -\x20\x2e\x20\x2e\x20\x2e\x20\x6f\x20\x26\x20\x2a\x2e\x3d\x2e\x38\ -\x20\x35\x20\x30\x20\x3e\x2e\x75\x2e\x4b\x2e\x4b\x2e\x37\x58\x76\ -\x2e\x3e\x2e\x36\x20\x35\x20\x4f\x20\x2e\x20\x3a\x20\x35\x2e\x36\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\ -\x22\x59\x58\x59\x58\x59\x58\x59\x58\x4d\x58\x77\x2e\x2d\x20\x3a\ -\x20\x36\x58\x3e\x58\x30\x2e\x3d\x2e\x25\x20\x6f\x20\x2e\x20\x2e\ -\x20\x6f\x20\x25\x20\x2d\x20\x3d\x2e\x33\x2e\x77\x2e\x3e\x58\x33\ -\x58\x35\x58\x3e\x58\x33\x2e\x3b\x20\x2a\x20\x32\x20\x32\x20\x32\ -\x20\x32\x20\x40\x20\x2b\x20\x58\x20\x6f\x20\x2d\x20\x33\x2e\x3e\ -\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x4d\ -\x58\x3e\x58\x2a\x2e\x25\x20\x6f\x20\x2e\x20\x2e\x20\x6f\x20\x26\ -\x20\x3a\x20\x3b\x2e\x35\x2e\x3b\x58\x3e\x58\x35\x58\x36\x58\x42\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x36\x58\x3e\x58\x30\x2e\x3b\ -\x2e\x2a\x2e\x3a\x20\x3a\x20\x3a\x20\x2a\x2e\x3b\x2e\x30\x2e\x3e\ -\x58\x36\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x42\x58\x33\x58\x35\x2e\x2a\x2e\x3d\x2e\x3b\ -\x2e\x30\x2e\x3b\x58\x33\x58\x36\x58\x4d\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x4d\x58\x36\x58\x33\x58\x33\x58\x33\x58\x33\x58\x33\x58\x36\ -\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\ -\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x0a\x7d\x3b\x0a\ -" - -qt_resource_name = "\ -\x00\x07\ -\x07\x3b\xe0\xb3\ -\x00\x70\ -\x00\x6c\x00\x75\x00\x67\x00\x69\x00\x6e\x00\x73\ -\x00\x09\ -\x0a\xa8\xd2\x62\ -\x00\x69\ -\x00\x6e\x00\x73\x00\x74\x00\x61\x00\x6c\x00\x6c\x00\x65\x00\x72\ -\x00\x08\ -\x0a\x61\x52\x8d\ -\x00\x69\ -\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x78\x00\x70\x00\x6d\ -" - -qt_resource_struct = "\ -\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ -\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ -\x00\x00\x00\x14\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\ -\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -" - -def qInitResources(): - QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) - -def qCleanupResources(): - QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data) - -qInitResources()